0

3 つのタブを持つ AccordionPanel があります。最初のタブには、必要な入力テキストを含むフォームがあります。ここで問題が発生しました。1 つのタブだけでなく、3 つのタブすべてにエラー メッセージが表示されます。何かアドバイスはありますか?1 つのタブだけに入力が必要なエラー メッセージを設定するにはどうすればよいですか?

<p:accordionPanel dynamic="true" cache="true">
    <p:tab title="Change your details" id="tabDetails">
    <p:messages id="message1" showDetail="true" autoUpdate="true" closable="true" />
        <h:panelGrid columns="2" cellpadding="10" id="gridDetails">
            <h:outputText value="First name: *" /> 
            <p:inputText value="#{login.current.firstName}" id="firstName" required="true" />
            <!-- ... -->
                        <p:commandButton value="save" actionListener="#{login.saveModifications}" update="gridDetails"/>
        </h:panelGrid>
    </p:tab> 
    <p:tab title="Change your password" id="tabPass">
    <p:messages id="message2" showDetail="true" autoUpdate="true" closable="true"/>
        <h:panelGrid columns="3" cellpadding="10" id="gridPass">                    
            <!-- ... -->            
            <p:commandButton value="save" actionListener="#{login.changePassword}" update="gridPass" />
        </h:panelGrid>
    </p:tab>
        <!-- ... -->
</p:accordionPanel>

手伝ってくれてありがとう!

4

1 に答える 1

2

デフォルトp:messagesでは、ビューからのすべての JSF メッセージを表示します。特定のものだけを表示したい場合は、属性を使用する必要がありますfor

あなたの場合、それはトリックを行う必要があります:

<p:accordionPanel dynamic="true" cache="true">
    <p:tab title="Change your details" id="tabDetails">
    <p:messages id="message1" for="btn1" showDetail="true" autoUpdate="true" closable="true" />
        <h:panelGrid columns="2" cellpadding="10" id="gridDetails">
            <h:outputText value="First name: *" /> 
            <p:inputText value="#{login.current.firstName}" id="firstName" required="true" />
            <!-- ... -->
                        <p:commandButton id="btn1" value="save" actionListener="#{login.saveModifications}" update="gridDetails"/>
        </h:panelGrid>
    </p:tab> 
    <p:tab title="Change your password" id="tabPass">
    <p:messages id="message2" for="btn2" showDetail="true" autoUpdate="true" closable="true"/>
        <h:panelGrid columns="3" cellpadding="10" id="gridPass">                    
            <!-- ... -->            
            <p:commandButton id="btn2" value="save" actionListener="#{login.changePassword}" update="gridPass" />
        </h:panelGrid>
    </p:tab>
        <!-- ... -->
</p:accordionPanel>

注 : アクション コンポーネント ( p:commandButton) に特定の ID を追加しました。

より詳しい情報 :

于 2013-05-31T11:25:32.247 に答える