2

私はjsf 2.1とPrimefaces 3.3を使用しています。を使用して、ページの上部にあるページ内のエラーの総数を表示したいと考えています<p:message>

どのようにすればよいかアドバイスをお願いします。例を挙げて説明していただけると助かります。前もって感謝します。

4

3 に答える 3

4

特定のメッセージだけをカウントしたい場合 (例: エラーのみ)。次のようなことができます:

@ManagedBean
@RequestScoped
public class MessageCount {

    public int getFatal() {
        return countMessages(FacesMessage.SEVERITY_FATAL);
    }

    public int getError() {
        return countMessages(FacesMessage.SEVERITY_ERROR);
    }

    public int getWarn() {
        return countMessages(FacesMessage.SEVERITY_WARN);
    }

    public int getInfo() {
        return countMessages(FacesMessage.SEVERITY_INFO);
    }

    private int countMessages(FacesMessage.Severity severity) {
        Iterator<FacesMessage> iterator = FacesContext.getCurrentInstance().getMessages();
        int count = 0;
        while (iterator.hasNext()) {
            FacesMessage msg = iterator.next();
            if (severity.compareTo(msg.getSeverity()) == 0) {
                count++;
            }
        }
        return count;
    }
}

そしてあなたのjsfページで:

<h:outputText value="#{messageCount.error}"/>
于 2013-01-15T16:17:29.120 に答える
2

<p:message/>を使用する理由

これを試して

<h:outputText value="#{fn:length(facesContext.messageList)}"/>
于 2013-01-15T15:36:26.120 に答える
0

このための組み込み機能はありません。たとえば、inputHidden要素をフォームに追加p:messageし、その入力非表示フィールドに追加できます。

<p:messages for="justForErrorCount"/>
<h:inputHidden id="justForErrorCount"/>

バッキング Bean で、いくつかのチェックを行い、メッセージを追加できます。

if (FacesContext.getCurrentInstance().getMessageList() != null &&
        !FacesContext.getCurrentInstance().getMessageList().isEmpty()) {

    String message = "You have " + 
        FacesContext.getCurrentInstance().getMessageList().size() + " errors";
    FacesContext.getCurrentInstance().addMessage("justForErrorCount",
        new FacesMessage(FacesMessage.SEVERITY_ERROR, message);
}
于 2013-01-15T15:36:27.913 に答える