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



我使用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"/>

在后台你可以做一些检查和添加消息:

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);
}

相关内容

  • 没有找到相关文章

最新更新