Captcha is not validated if it has rendered attribute
vestnik Dec 17, 2009 11:54 AMI have requirement to check nonsuccessive login attempts and if it's greater then 3 show captcha on login page for this user. I've added boolean variable to my Authenticator class and added captcha with
rendered="#{authenticator.captchaRequired}"
attribute to my login view. It looks like captcha input is not validated at all. I've removed
rendered="..."
attribute and everything works correctly. Does anybody know how to handle this situation?
Here is my login form:
<h:form id="loginForm"> <rich:panel> <f:facet name="header">#{messages['edupro.login.panelTitle']}</f:facet> <div class="dialog"> <h:panelGrid columns="3" rowClasses="prop" columnClasses="name,value"> <h:outputLabel for="email" value="#{messages['edupro.login.email']}"/> <h:inputText id="email" value="#{credentials.username}" title="#{messages['edupro.login.emailTooltip']}" validator="emailFacesValidator" required="true"/> <h:message for="email" styleClass="message" errorClass="errormsg" infoClass="infomsg" warnClass="warnmsg"/> <h:outputLabel for="password" value="#{messages['edupro.login.password']}"/> <h:inputSecret id="password" value="#{credentials.password}" required="#{!empty param['loginForm:submit']}"> <f:validateLength minimum="#{globalSettings.minPasswdLength}" maximum="#{globalSettings.maxPasswdLength}"/> </h:inputSecret> <h:message for="password" styleClass="message" errorClass="errormsg" infoClass="infomsg" warnClass="warnmsg"/> <h:graphicImage value="/seam/resource/captcha" rendered="#{authenticator.captchaRequired}"/> <h:inputText id="verifyCaptcha" value="#{captcha.response}" required="true" rendered="#{authenticator.captchaRequired}"> <s:validate /> </h:inputText> <h:message for="verifyCaptcha" styleClass="message" errorClass="errormsg" infoClass="infomsg" warnClass="warnmsg" rendered="#{authenticator.captchaRequired}"/> <h:panelGroup/> <h:commandButton id="submit" value="#{messages['edupro.login.submit']}" action="#{authenticator.tryLogin}"/> <h:panelGroup/> <h:panelGroup/> <h:panelGroup/> <h:commandLink id="recoverPassword" value="#{messages['edupro.login.forgotPassword']}" title="#{messages['edupro.login.forgotPasswordTooltip']}" action="#{personalServices.recoverPassword}"/> </h:panelGrid> </div> </rich:panel>