серьезность сообщения JSF - PullRequest
3 голосов
/ 22 февраля 2010

Как я могу получить все сообщения с SEVERITY только ОШИБКА. Я попробовал:

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

Это правильный путь? Он не перехватывает сообщения со степенью ОШИБКИ.

Любая помощь будет принята с благодарностью.

1 Ответ

8 голосов
/ 22 февраля 2010

Сравнение неверно. Вы не можете (надежно) сравнить строки по их содержанию с ==. При сравнении объектов с == он вернет 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);
    }
}
...