Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
1.1.6
-
None
-
None
-
MyFaces Core 1.2.2 - Tomahawk 1.1.6 - RichFaces 3.2.0-GA - Spring 2.0.5 on Jetty 6.1.3
Description
(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 #
</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="#
" 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 #
</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="#
"
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.