1

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

在不填写用户名的情况下单击保存按钮时,它不显示所需的消息

4

1 回答 1

2

默认情况下<p:commandButton>发送一个 ajax 请求,其中默认执行整个表单(如 中process="@form"),但默认情况下实际上不会更新任何内容(如中update="")。

如果要在完成 ajax 请求时更新 UI,则需要显式指定update属性。例如,这会更新整个表单:

<p:commandButton ... update="@form" />

这仅更新特定组件:

<h:messages id="messages" ... />
<p:commandButton ... update="messages" />

您也可以使用<p:messages>支持自动更新的 PrimeFaces own。

<p:messages ... autoUpdate="true" />
<p:commandButton ... />
于 2012-10-10T14:53:26.103 回答