Как показать общее количество ошибок на странице в сообщении Primefaces?

Я использую jsf 2.1 и Primefaces 3.3. Я хочу показать общее количество ошибок на странице в верхней части страницы, используя <p:message>.

Пожалуйста, дайте мне совет, как это сделать, и будет полезно, если вы объясните это на примере. Заранее спасибо.


person user1933973    schedule 15.01.2013    source источник


Ответы (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}"/>
person fischermatte    schedule 15.01.2013

Зачем использовать <p:message/> ?

Попробуй это

<h:outputText value="#{fn:length(facesContext.messageList)}"/>
person Kerem Baydoğan    schedule 15.01.2013

Для этого нет встроенного функционала. Например, вы можете добавить элемент 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);
}
person partlov    schedule 15.01.2013