jsf消息严重性

时间:2010-02-22 19:16:28

标签: jsf messages

如何使用SEVERITY获取所有消息仅为ERROR。 我试过了:

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

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

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:8)

比较错误。您无法(可靠地)将其内容上的字符串与==进行比较。将对象与==进行比较时,如果它们与您希望的引用相同,而不是,则只返回true。需要将对象与Object#equals()进行比较。

但您可以将常量==进行比较。 FacesMessage.Severity值都是静态常量。您应该将SeveritySeverity进行比较。 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);
    }
}