私はjsf 2.1とPrimefaces 3.3を使用しています。を使用して、ページの上部にあるページ内のエラーの総数を表示したいと考えています<p:message>
。
どのようにすればよいかアドバイスをお願いします。例を挙げて説明していただけると助かります。前もって感謝します。
私はjsf 2.1とPrimefaces 3.3を使用しています。を使用して、ページの上部にあるページ内のエラーの総数を表示したいと考えています<p:message>
。
どのようにすればよいかアドバイスをお願いします。例を挙げて説明していただけると助かります。前もって感謝します。
特定のメッセージだけをカウントしたい場合 (例: エラーのみ)。次のようなことができます:
@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}"/>
<p:message/>
を使用する理由
これを試して
<h:outputText value="#{fn:length(facesContext.messageList)}"/>
このための組み込み機能はありません。たとえば、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);
}