Primefaces表单字段requiredMessage显示两次

时间:2014-09-16 20:32:14

标签: jsf primefaces

我有一个带有p:消息和inputText字段的表单。 inputText字段是必需的,并且具有requiredMessage。当使用空的inputText单击commandButton时,我想仅使用p:消息显示消息,但我看到相同的消息两次。一旦使用p:message,另一个我认为是服务器端验证消息(如右上角的咆哮)。我的相关代码如下:

<h:form id="saveUserForm">
  <p:panel style="border:none">
    <p:messages id="messages" closable="true" autoUpdate="true"  />
    <div align="left">
        <p:panelGrid styleClass="userPanel">                            
            <p:row>                                
                <p:column colspan="4">
                    <p:inputText id="street" value="" size="67" maxlength="100" required="true" requiredMessage="Street is required" />
                </p:column>
            </p:row>                            
            <p:row>
                <p:column colspan="4">
                    <div align="center">
                        <p:commandButton action="#{userController.add}" rendered="#{mode eq 'add'}" value="Add" ajax="false" update=":saveUserForm"/>
                        <p:commandButton action="#{userController.update}" rendered="#{mode ne 'add'}" value="Update" ajax="false" update=":saveUserForm"/>
                        <p:commandButton action="#{userController.prepareList}" value="Cancel" immediate="true"/>
                    </div>
                </p:column>
            </p:row>
        </p:panelGrid>
    </div>
  </p:panel>
</h:form>

不确定为什么我两次看到requiredMessage。有什么想法吗?

编辑:为主模板添加咆哮代码

<p:growl id="messages" showDetail="true" sticky="true" autoUpdate="true"/>

我看到的屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:3)

删除showDetail="true"。 其默认值为false

答案 1 :(得分:1)

我认为,在你的情况下,消息会被添加到p:message和p:growl

试试这个,(Primefaces 4.0及以上版本)

删除autoUpdate =&#34; true&#34;来自p:messages并添加update =&#34;:saveUserForm&#34;在p:commandButton中,只有p:消息才会更新。并确保按钮点击时p:growl没有更新。

或试试这个

<p:growl globalOnly="true" autoUpdate="false">

这样来自服务器端的消息只显示在growl中。

编辑:确保未使用模板中的组件。