Captcha Not Updating Without New Session
accountclosed Jul 21, 2008 9:28 PMI am using Seam 2.0.2 SP1, Tomcat 6, Ubuntu 7.10 and am trying to use the Seam captcha within a natural conversation. Problem is the captcha does not reload in the following conditions:
- Invalid input
- New natural conversation started
Only if I clear the browser's cache will the captcha reload with a different image/value which indicates that the session has been cleared from the browser. Anyone know how I can make this work properly (i.e., reload an image for each invalid response and new conversation)?
My form has:
<rich:panel style="width:250px;">
     <f:facet name="header">
          <h:outputText value="Answer the following question to continue:"></h:outputText>
     </f:facet>
     <h:panelGrid columns="2">
          <h:outputText value="Captcha:"/>
          <h:graphicImage value="/seam/resource/captcha"/>
          <h:outputText value="Result: "/>
          <h:inputText id="verifyCaptcha" value="#{captcha.response}" required="true" 
               styleClass="text">
               <s:validate />
          </h:inputText>
            <h:message for="verifyCaptcha" styleClass="text"/>
          <h:outputText value="Click: "/>
          <h:commandButton value="REGISTER" action="#{memberreg.start}" styleClass="submit">
               <s:conversationName value="regmem"/>
               <s:conversationPropagation type="join"/>
          </h:commandButton>
     </h:panelGrid>
</rich:panel>
My pages.xml file has:
<pages xmlns="http://jboss.com/products/seam/pages"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd"
       no-conversation-view-id="/index.xhtml"
                 login-view-id="/index.xhtml">
  <!-- Couple of notes about the attributes in the root element pages:
<conversation name="regmem"
     parameter-name="memberID"
     parameter-value="#{memberreg.newMember.memberID}"/>
<page view-id="/register.xhtml">
     <param name="memberID" value="#{memberreg.newMember.memberID}"/>
     <navigation from-action="#{memberreg.start}">
          <begin-conversation join="true" conversation="regmem"/>
          <rule if="#{memberreg.started}">
               <redirect view-id="/register1.xhtml"/>
          </rule>
     </navigation>
     <navigation>
          <rule if="#{memberreg.agree}">
               <redirect view-id="/register2.xhtml"/>
          </rule>
          <rule if="#{memberreg.started and not memberreg.agree}">
               <redirect view-id="/register1.xhtml"/>
          </rule>
          <rule if="#{identity.loggedIn}">
               <redirect view-id="/memberadmin.xhtml"/>
          </rule>
     </navigation>
</page>
<page view-id="/register1.xhtml" conversation-required="true"
     conversation="regmem">
     <restrict>#{memberreg.started}</restrict>
     <navigation from-action="#{memberreg.agreeToLicense}">
          <rule if="#{memberreg.agree}">
               <redirect view-id="/register2.xhtml"/>
          </rule>
     </navigation>
     <navigation from-action="#{memberreg.cancel}">
          <rule if="#{not memberreg.agree}">
               <redirect view-id="/index.xhtml"/>
               <end-conversation/>
          </rule> 
     </navigation>
     <navigation>
          <rule if="#{identity.loggedIn}">
               <redirect view-id="/memberadmin.xhtml"/>
          </rule>
     </navigation>
</page>
<page view-id="/register2.xhtml" conversation-required="true"
     conversation="regmem">
     <restrict>#{memberreg.agree}</restrict>
     <navigation from-action="#{memberreg.end}">
          <rule if="#{memberreg.ended}">
               <redirect view-id="/index.xhtml"/>
               <end-conversation/>
          </rule>
     </navigation>
     <navigation>
          <rule if="#{identity.loggedIn}">
               <redirect view-id="/memberadmin.xhtml"/>
          </rule>
     </navigation>
</page>
<exception class="org.jboss.seam.security.NotLoggedInException">
<end-conversation/>
     <redirect view-id="/index.xhtml">
          <message severity="warn">You are not logged in.</message>
     </redirect>
</exception>
<exception class="org.jboss.seam.security.AuthorizationException">
     <end-conversation/>
     <redirect view-id="/index.xhtml">
          <message severity="warn">You are not authorized.</message>
     </redirect>
</exception>
</pages>