MyFaces Tomahawk
  1. MyFaces Tomahawk
  2. TOMAHAWK-1232

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

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.1.6
    • Fix Version/s: None
    • Component/s: Validators
    • Labels:
      None
    • Environment:
      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 #

      {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.

        Activity

        Hide
        Wim Vandenhaute added a comment -

        Experiencing the same issue when I migrated from Seam 1.2 to Seam 2.1

        Show
        Wim Vandenhaute added a comment - Experiencing the same issue when I migrated from Seam 1.2 to Seam 2.1

          People

          • Assignee:
            Unassigned
            Reporter:
            Baroch Oren
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:

              Time Tracking

              Estimated:
              Original Estimate - 1h
              1h
              Remaining:
              Remaining Estimate - 1h
              1h
              Logged:
              Time Spent - Not Specified
              Not Specified

                Development