Richfaces, Validation, actionParam
nathandennis Jun 1, 2008 3:19 PMhaving trouble submitting a form and passing actionparam with the same commandLink if i am preforming validation on the fields in 3.2. any direction would be greatly appreciated.
<s:div rendered="#{joinAction.tabsw ==1}" styleClass="jointabpanel1"> <a:form submitMode="ajax"> <a:jsFunction name="reRenderJoinPanel" reRender="joinpanel" eventsQueue="joinQueue" ajaxSingle="true"> <a:actionparam name="tabsw" value="2" assignTo="#{joinAction.tabsw}"/> <s:conversationId/> </a:jsFunction> <div class="joinContent"> <p>Create your login by entering the information below and select <b>next</b>. Your password must be between 6 and 15 characters long.</p> <div> <div class="prop"> <span class="jointabLabels"> <h:outputText value="Email:"/> <s:span styleClass="required">*</s:span> </span> <span class="value #{invalid?'errors':''}"> <h:inputText id="emailid" required="true" value="#{joinAction.emailaddress}"> <f:validator validatorId="emailValidator"/> <s:validate/> <a:support event="onblur" eventsQueue="joinQueue" reRender="emailDecoration" ajaxSingle="true"/> </h:inputText> </span> <span class="error"> <rich:message id="emailError" for="emailid" styleClass=" errors "> <f:facet name="passedMarker" > <h:graphicImage value="/img/passed.gif" rendered="#{not empty joinAction.emailaddress}"/> </f:facet> <f:facet name="errorMarker"> <h:graphicImage value="/img/error.gif" /> </f:facet> <f:facet name="infoMarker"> <h:graphicImage value="/img/error.gif" /> </f:facet> </rich:message> </span> </div> <div style="width:100%; padding-left:0px;" align="left"> <s:decorate id="firstDecoration" template="../layout/joinedit.xhtml"> <ui:define name="label">first name:</ui:define> <span> <h:inputText id="firstnameid" required="true" value="#{joinAction.firstname}"> <a:support event="onblur" eventsQueue="joinQueue" reRender="firstDecoration" ajaxSingle="true"/> </h:inputText> </span> </s:decorate> <s:decorate id="lastDecoration" template="../layout/joinedit.xhtml"> <ui:define name="label">last name:</ui:define> <h:inputText id="lastnameid" required="true" value="#{joinAction.lastname}"> <a:support event="onblur" eventsQueue="joinQueue" reRender="lastDecoration" ajaxSingle="true"/> </h:inputText> </s:decorate> </div> <div class="prop"> <span class="jointabLabels #{invalid?'errors':''}"> password: <s:span styleClass="required">*</s:span> </span> <span class="value #{invalid?'errors':''}"> <h:inputSecret id="passwdid" required="true" value="#{joinAction.passwd}"> <s:validate/> <a:support event="onblur" eventsQueue="joinQueue" reRender="passwdError" ajaxSingle="true"/> </h:inputSecret> </span> <span class="error"> <rich:message id="passwdError" for="passwdid" styleClass="errors"> <f:facet name="passedMarker"> <h:graphicImage value="/img/passed.gif" rendered="#{not empty joinAction.passwd}"/> </f:facet> <f:facet name="infoMarker"> <h:graphicImage value="/img/error.gif" /> </f:facet> <f:facet name="errorMarker"> <h:graphicImage value="/img/error.gif" /> </f:facet> </rich:message> </span> </div> <div class="prop"> <span class="jointabLabels #{invalid?'errors':''}"> <h:outputText value="retype password:"/> <s:span styleClass="required">*</s:span> </span> <span class="value #{invalid?'errors':''}"> <h:inputSecret id="repasswdid" required="true" value="#{joinAction.repasswd}"> <f:validator validatorId="passwordValidator"/> <s:validate/> <a:support event="onblur" eventsQueue="joinQueue" reRender="repasswdError" ajaxSingle="true"/> </h:inputSecret> </span> <span class="error"> <rich:message id="repasswdError" for="repasswdid" styleClass="errors"> <f:facet name="passedMarker"> <h:graphicImage value="/img/passed.gif" rendered="#{not empty joinAction.repasswd}"/> </f:facet> <f:facet name="infoMarker"> <h:graphicImage value="/img/error.gif" /> </f:facet> <f:facet name="errorMarker"> <h:graphicImage value="/img/error.gif"/> </f:facet> </rich:message> </span> </div> <div class="prop"> <span class="jointabLabels"> <h:outputText value="Email Sign Up:"/> </span> <span class="value"> <h:selectBooleanCheckbox value="#{joinAction.emailsignup}"> <a:support event="onclick"/> </h:selectBooleanCheckbox> </span> </div> <div class="prop" style="width:500px;top:290px;position:absolute;"> <p> <h:outputText value="Please send me Managing Memories emails with special offers and information."/> </p> <p class="next"> <a:commandLink ajaxSingle="false" reRender="joinpanel" eventsQueue="joinQueue" name="joinlogintab"> <img src="../img/images/nextBtn.png" border="0"/> <s:conversationId/> <a:actionparam noEscape="true" name="panelid" value="2" assignTo="#{joinAction.tabsw}"/> </a:commandLink> </p> </div> </div> </div> </a:form> </s:div>
the gist is,, i have a stateful backing bean and multiple custom validators. the issue is if i allow validation on the individual fields, the actionparam isnt passed. on other panels using the same code.. if i leave off the validation it works fine. is this a limitation of richfaces?
ive already looked at the wizard stuff in the demo.. .there are issues with structuring it like that because client wanted multiple ways to get to each page.