如何在primefaces消息中显示页面内的错误总数?

时间:2013-01-15 15:18:55

标签: jsf primefaces messages

我正在使用jsf 2.1和Primefaces 3.3。我想使用<p:message>在页面顶部显示页面中的错误总数。

请告诉我如何操作的建议,如果你能用一个例子来解释它会很有帮助。提前谢谢。

3 个答案:

答案 0 :(得分:3)

如果您只想计算特定消息(例如只有错误)。你可以这样做:

@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}"/>

答案 1 :(得分:2)

为什么要使用<p:message/>

试试这个

<h:outputText value="#{fn:length(facesContext.messageList)}"/>

答案 2 :(得分: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);
}