3

SEVERITY is ERROR only のすべてのメッセージを取得するにはどうすればよいですか。私は試した:

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 に答える