0

ここでは、よく聞かれる「メッセージを複数のフォームに表示する方法」の反対を示しま​​す。1 つのページに 2 つのフォームがあり、1 つのフォームで検証した後、両方のフォームの送信ボタンの下にサマリー エラー (検証が失敗した場合) が表示されます。コードが必要な電子メールの送信に成功すると、確認メッセージも両方のフォームに表示されます。それらは、送信されたフォームにのみ表示されます。inputTexts の下のメッセージは正常に機能します。私は何を間違っていますか?

<p:panel>
    <h:form id="id_rememberUserNameForm" prependId="false">
                <td>
...
                    <p:inputText 
                        id="id_existingEmailAddress"
                        styleClass="registerinputtext width_20em"
                        size="20" 
                        maxlength="60" 
                        value="#{credentialsManagementBean.emailAddress}"
                        validator="#{multivalidator.validateEmailExists}" >
                        <f:ajax event="blur" render="id_noSuchEmailError" />
                    </p:inputText>
                </td>
            </tr>
            <!-- validation error handling +++++++++++++++++ -->
            <tr class="errorMessage min_height_1p5em">
                <td colspan="2" >
                    <h:message for="id_existingEmailAddress" 
                                id="id_noSuchEmailError" 
                                showDetail="false" 
                                showSummary="true"/>
                </td>
            </tr>
        </table>
        <p:commandButton id="id_remindUsernameButton" 
                            value="Retrieve Username" 
                            action="#{credentialsManagementBean.rememberUsername}" >
            <f:ajax execute="id_rememberUserNameForm" render="id_UserReminderMessage" />
        </p:commandButton>
        <p:messages id="id_UserReminderMessage" 
                            showSummary="false"
                            showDetail="true"
                            autoUpdate="true" />

    </h:form>
</p:panel>

<!-- next form +++++++++++++++++ -->

<p:panel>
    <h:form id="id_resetPasswordForm" prependId="false">
...
                    <p:inputText 
                        id="id_existingUsername"
                        styleClass="registerinputtext width_20em"
                        size="20" 
                        maxlength="20" 
                        value="#{credentialsManagementBean.username}"
                        validator="#{multivalidator.validateUsernameExists}">
                        <f:ajax event="blur" render="id_noSuchUserError" />
                    </p:inputText>
                </td>
            </tr>
            <!-- validation error handling +++++++++++++++++ -->
            <tr class="errorMessage min_height_1p5em">
                <td colspan="2" >
                    <h:message for="id_existingUsername" 
                                id="id_noSuchUserError" 
                                showDetail="true" 
                                showSummary="false"/>
                </td>
            </tr>
        </table>
        <p:commandButton id="id_resetPasswordButton" 
                            value="Retrieve Username" 
                            action="#{credentialsManagementBean.resetPassword}" >
            <f:ajax execute="id_resetPasswordForm" render="id_pwResetMessage" />
        </p:commandButton>
        <p:messages id="id_pwResetMessage" 
                            showSummary="true"
                            showDetail="false"
                            autoUpdate="true" />
    </h:form>
</p:panel>
4

1 に答える 1

1

<p:commandButton>ルックスのアップデートを使用すると動作します。だからこれを試してください:

<p:commandButton id="id_remindUsernameButton" value="Retrieve Username" 
   action="#{credentialsManagementBean.rememberUsername}" update="id_UserReminderMessage" process="@form">
</p:commandButton>

デフォルトは ajax 送信な<p:commandButton>ので、必要ありません<f:ajax>

于 2012-08-31T13:01:06.843 に答える