серьезность сообщения jsf
Как я могу получить все сообщения с серьезностью только ошибка. Я попробовал:
Iterator<FacesMessage> messages = facesContext.getMessages(clientId);
while (messages.hasNext()){
if(messages.next().getSeverity().toString()=="ERROR 2")System.out.println(messages);
}
Это правильный путь? Он не перехватывает сообщения с серьезностью ошибок.
Любая помощь будет высоко ценится.
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); } }