5

私のFaceletsページには次のものがあります:

<p:growl id="msg1" life="1500"/>

そしてもう一つ

<p:messages id="msg2"/>

のみに表示するには、次のメッセージが必要<p:messages>です。

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("veillez saisir les champs obligatoires (*)", null));

しかし、それは にも現れ<p:growl>ます。

メッセージが表示される場所を指定するにはどうすればよいですか?

4

5 に答える 5

16

Primefaces マニュアルからの抜粋。282ページ。

ターゲティング可能なメッセージ

1 つまたは複数のメッセージを特定のメッセージ コンポーネントに向ける必要がある場合があります。たとえば、growl とメッセージが同じページにあり、growl にいくつかのメッセージを表示し、メッセージにいくつかのメッセージを表示する必要があるとします。メッセージを特定のコンポーネントに関連付けるには、 for 属性を使用します。

<p:messages for="somekey" />
<p:growl for="anotherkey" />

FacesContext context = FacesContext.getCurrentInstance();
context.addMessage("somekey", facesMessage1);
context.addMessage("somekey", facesMessage2);
context.addMessage("anotherkey", facesMessage3);

上記のサンプルでは、​​メッセージは最初と 2 番目のメッセージを表示し、うなり声は 3 番目のメッセージのみを表示します。

于 2013-03-26T13:30:26.070 に答える
14

p:messagesは単なる拡張でh:messagesあり、実際にはできないことp:growlと同じです。h:messagesできることはp:growl、メッセージを追加した後に更新しないcontextことです(おそらく、いくつかの「確認」で更新しますcommandButton)。そうすると、メッセージはまったく表示されませんが、一部のメッセージのみを表示するように指定することはできません。より良い解決策は、1つだけと混合p:growlp:messagesて使用しないことです。

あなたが探している機能は、新しいPrimefaces3.3ターゲット可能 メッセージで利用可能になります

于 2012-05-16T20:51:29.927 に答える
2

とにはすでに2つの異なるIDが割り当てられているので、次のようなものを試すことができる<p:growl><p:messages>思います。

<div id="aDiv">

    ### Use the following button to update only <p:growl id="msg1"> ###
    <p:commandButton actionListener="#{mrBean.doSomething}" update="msg1" />

    ### Use the following button to update only <p:messages id="msg2"> ###
    <p:commandButton actionListener="#{mrBean.doSomethingElse}" update="msg2" />

</div>

msg1重要なのは、両方ではなく、どちらか一方のみを更新する必要があるということですmsg2。上記の例では、ボタンに属性がある場合update="aDiv"、メッセージはとの両方に表示され<p:growl>ます<p:messages>

于 2012-05-17T11:56:21.357 に答える
1

p:growl の "Severity" 属性を使用して、Growl でのみ表示するメッセージの種類を指定できます。

<p:growl id="messages" severity="info, warn, error, fatal" showDetail="true" life="5200" autoUpdate="true" />

情報メッセージにGrowlを使用したくない場合は、「info」パラメータを削除するだけで、p:messageまたは任意のテキストを使用して、それに応じてスタイルを設定<p:outputLabel value="A Validation error occured!" rendered="#{facesContext.validationFailed}" /> できます。このようにして、Growlとメッセージを使用できます。あなたの選択に。

于 2015-06-29T07:40:00.863 に答える
0

簡単です。ここでは、JSF + PrimeFaces 5.2 の例を示します。

<p:messages for ="Message1" showDetail="true" autoUpdate="true" closable="true" />

<p:messages for ="Message2" showDetail="true" autoUpdate="true" closable="true" />
FacesContext.getCurrentInstance().addMessage("Message1", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error!", "Hello 1"));
FacesContext.getCurrentInstance().addMessage("Message2", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error!", "Hello 2"));
于 2015-05-10T14:32:27.963 に答える