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を使用することもできます。

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