我有一个带有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"/>
我看到的屏幕截图:
答案 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中。
编辑:确保未使用模板中的组件。