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

Как я могу получить все сообщения только с ТЯЖЕЛОСТЬЮ ОШИБКИ. Я старался:

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

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

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


person user234194    schedule 22.02.2010    source источник


Ответы (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);
    }
}
person BalusC    schedule 22.02.2010
comment
Обычно только константы перечисления согласуются для сравнения с ==, объекты могут не работать. Вместо этого используйте серьезность1.getOrdinal() == серьезность2.getOrdinal(). - person Tires; 28.11.2013