不显示自定义消息(使用Jsf和primeface3.3)

时间:2012-10-10 11:19:23

标签: jsf primefaces

我正在使用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>

单击保存按钮而不填写用户名时,它不会显示所需的消息

1 个答案:

答案 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 ... />