如何使用SEVERITY获取所有消息仅为ERROR。 我试过了:
Iterator<FacesMessage> messages = facesContext.getMessages(clientId);
while (messages.hasNext()){
if(messages.next().getSeverity().toString()=="ERROR 2")System.out.println(messages);
}
这是正确的方法吗?它不会拦截ERROR严重性的消息。
任何帮助都将受到高度赞赏。
答案 0 :(得分:8)
比较错误。您无法(可靠地)将其内容上的字符串与==
进行比较。将对象与==
进行比较时,如果它们与您希望的引用相同,而不是值,则只返回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);
}
}