我正在使用primeface 3.3和JSF创建一个演示项目,如果用户没有填写必填字段,那么它应该显示一条消息。这是我的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<f:view contentType="text/html">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title> growl</title>
</h:head>
<h:body>
<h:form>
<p:growl id="growl" showDetail="true" sticky="true" />
<p:panel >
<h:panelGrid columns="3">
<h:outputText value="Your Name: *" />
<p:inputText value="#{someBean}" required="true" label="Name" requiredMessage="User Name Requireds"/>
<h:messages style="color:red;margin:5px;" />
</h:panelGrid>
<p:commandButton value="Save" action="success" />
</p:panel>
</h:form>
</h:body>
</f:view>
</html>
单击保存按钮而不填写用户名时,它不会显示所需的消息
答案 0 :(得分:2)
默认情况下,<p:commandButton>
会发送一个ajax请求,其中默认情况下会执行整个表单(如process="@form"
中所述),但默认情况下实际上没有将被更新(如在update=""
)。
如果要在完成ajax请求时更新UI,则需要显式指定update
属性。例如,这会更新整个表单:
<p:commandButton ... update="@form" />
这只更新了一个特定组件:
<h:messages id="messages" ... />
<p:commandButton ... update="messages" />
您也可以使用支持自动更新的PrimeFaces自己的<p:messages>
。
<p:messages ... autoUpdate="true" />
<p:commandButton ... />