« Return to Thread: [jira] Created: (TOMAHAWK-1232) EqualValidator: 'for' attribute doesn't work correctly in conjunction with RichFaces

[jira] Created: (TOMAHAWK-1232) EqualValidator: 'for' attribute doesn't work correctly in conjunction with RichFaces

by My Faces - Dev mailing list :: Rate this Message:

Reply to Author | View in Thread

EqualValidator: 'for' attribute doesn't work correctly in conjunction with RichFaces
------------------------------------------------------------------------------------

                 Key: TOMAHAWK-1232
                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1232
             Project: MyFaces Tomahawk
          Issue Type: Bug
          Components: Validators
    Affects Versions: 1.1.6
         Environment: MyFaces Core 1.2.2 - Tomahawk 1.1.6 - RichFaces 3.2.0-GA - Spring 2.0.5 on Jetty 6.1.3
            Reporter: Baroch Oren


(Put as Major - since might apply also to other places where interface with RichFaces might cause similar issue)

In the following code, generated Id for <t:inputSecret> is postfixed with j_id_2, which prevents <t:EqualValidator> from working properly.
This issue is similar to an RichFaces-internal bug, already fixed: http://jira.jboss.com/jira/browse/RF-1499

code:
<a4j:region id="changePasswordModalDialogCompositionRegion">
        <rich:modalPanel id="changePasswordModalPanel" autosized="true" zindex="2000" width="600" height="400" showWhenRendered="true">
                <h:form id="changePasswordModalPanelForm">
                        <t:div id="changePasswordModalDiv">
                                <rich:panel id="identityVerificationPanel">
                                        <f:facet name="header">
                                                <h:outputText value="Identity verification for user #{authCtx.currentUser.id}"/>
                                        </f:facet>
                                        <t:panelGrid columns="2">
                                                <t:outputLabel value="Please type the current user (#{authCtx.currentUser.id}) password" for="currentUserPassword"/>
                                                <t:inputSecret id="currentUserPassword" value="#{userAdministrationFormBean.actingUserPassword}" required="true" redisplay="false" tabindex="1">
                                                        <!--a4j:support event="onkeyup" ajaxSingle="true" immediate="true" reRender="changePasswordButtonDiv"/-->
                                                </t:inputSecret>
                                        </t:panelGrid>
                                </rich:panel>
                                <rich:spacer height="50"/>
                                <rich:panel id="passwordChangePanel">
                                        <f:facet name="header">
                                                <h:outputText value="Change password for #{userAdministrationFormBean.selectedUserId}"/>
                                        </f:facet>
                                        <t:panelGrid columns="3">
                                                <t:outputLabel value="Type a new password:" for="passwordInput"/>
                                                <t:inputSecret id="passwordInput" value="#{userAdministrationFormBean.selectedUserNewPassword}" required="true" redisplay="false" forceId="true" />
                                                <rich:spacer/>
                                               
                                                <t:outputLabel value="Re-type password:" for="repeatPassswordInput"/>
                                                <t:inputSecret id="repeatPassswordInput" required="true" value="" redisplay="false">
                                                        <t:validateEqual for="passwordInput" message="Password not changed: Password fields do not match"/>
                                                </t:inputSecret>
                                                <t:inputHidden value="#{userAdministrationFormBean.selectedUserId}" />
                                               
                                                <rich:spacer/>
                                                <rich:spacer/>
                                                <rich:spacer/>
                                               
                                                <rich:spacer/>
                                                <t:div id="changePasswordButtonDiv">
                                                        <a4j:commandButton value="Change password" id="changePasswordButton" action="#" actionListener="#{userAdministrationFormBean.changePassword}"  
                                                                                 reRender="changePasswordInclude">
                                                                                 </a4j:commandButton>
                                                </t:div>
               
                                                <a4j:commandButton value="Cancel" action="#" onclick="Richfaces.hideModalPanel('changePasswordModalPanel')" action="#{userAdministrationFormBean.resetPasswordDialog}"
                                                                                immediate="true"/>
                                                                                                                                               
                                        </t:panelGrid>
                                </rich:panel>
                                <a4j:outputPanel id="chgPswMsgsPanel">
                                        <t:messages showDetail="true" showSummary="true" layout="table"/>
                                </a4j:outputPanel>
                        </t:div>
                </h:form>
        </rich:modalPanel>
</a4j:region>


Note: workaround - use forceId to disable postfixing - does not work. in this case, the error would be:
javax.faces.FacesException - Unable to find component 'passwordInput' (calling findComponent on component repeatPassswordInputj_id_2')
The Richfaces postfixing still applies; Firebug shows: <input id="passwordInputj_id_2" type="password" name="passwordInputj_id_2"/>

BTW postfixing, as far as I understood, originates from the JSF spec, and thus should not be disabled.

Currently this issue forces me to re-write the EqualValidator component.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

 « Return to Thread: [jira] Created: (TOMAHAWK-1232) EqualValidator: 'for' attribute doesn't work correctly in conjunction with RichFaces