2013-05-31 63 views
0

我有一个带有三个选项卡的AccordionPanel。在第一个选项卡中是一个包含所需inputTexts的表单。现在我遇到了一个问题,错误消息在所有三个选项卡中都显示,不仅在一个中。任何建议?我如何才能为一个选项卡设置所需输入的错误消息?PrimeFaces:AccordionPanel:所需输入的错误信息

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

感谢您的帮助!

回答

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> 

注:我已经添加了特定的ID到你的动作部件(p:commandButton)。

更多信息:

+0

非常感谢!这是我正在寻找的。 – PrincAm