3

我如何才能获取所有带有 SEVERITY 的消息只是错误。我试过:

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

这是正确的方法吗?它不会拦截具有 ERROR 严重性的消息。

任何帮助将不胜感激。

4

1 回答 1

8

比较是错误的。您不能(可靠地)将其内容上的字符串与==. 将对象与 进行比较时,只有当它们具有相同的引用==时才会返回,而不是您似乎期望的值。对象需要与 进行比较。trueObject#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);
    }
}
于 2010-02-22T19:21:15.680 回答