серьезность сообщения jsf


Как я могу получить все сообщения с серьезностью только ошибка. Я попробовал:

Iterator<FacesMessage> messages = facesContext.getMessages(clientId);
while (messages.hasNext()){
    if(messages.next().getSeverity().toString()=="ERROR 2")System.out.println(messages);
}

Это правильный путь? Он не перехватывает сообщения с серьезностью ошибок.

Любая помощь будет высоко ценится.

1 3

1 ответ:

Сравнение неверно. Вы не можете (надежно) сравнить строки по его содержанию с ==. При сравнении объектов с == он возвращает только true, если они имеют одинаковую ссылку, а не значение, Как вы, кажется, ожидаете. Объекты нужно сравнивать с Object#equals().

Но вы можете сравнить константы с константами ==. Тот самый FacesMessage.Severity все значения являются статическими константами. Вам лучше просто сравнить Severity с Severity. Кроме того, sysout ошибается, это печать итератора вместо единственного сообщения.

Это должно сработать:

Iterator<FacesMessage> messages = facesContext.getMessages(clientId);
while (messages.hasNext()) {
    FacesMessage message = messages.next();
    if (message.getSeverity() == FacesMessage.SEVERITY_ERROR) {
        System.out.println("Error: " + message);
    }
}