tags:

views:

190

answers:

1

How do I able to fetch all the messages with SEVERITY is ERROR only. I tried:

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

Is this th right way? It doesnot intercept messages with ERROR severity.

Any help would be highly appreciated.

+2  A: 

The comparison is wrong. You cannot (reliably) compare Strings on its content with ==. When comparing objects with ==, it would only return true if they are of the same reference, not value as you seem to expect. Objects needs to be compared with Object#equals().

But you can compare constants with ==. The FacesMessage.Severity values are all static constants. You should rather just compare Severity with Severity. Also the sysout is wrong, it is printing the iterator instead of the sole message.

This should work:

Iterator<FacesMessage> messages = facesContext.getMessages(clientId);
while (messages.hasNext()) {
    FacesMessage message = messages.next();
    if (message.getSeverity() == FacesMessage.SEVERITY_ERROR) {
        System.out.println("Error: " + message);
    }
}
BalusC