2010-02-22 4 views
3

Comment puis-je récupérer tous les messages avec SEVERITY est ERREUR seulement. Je essayé:jsf gravité du message

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

Est-ce e droit chemin? Il n'intercepte pas les messages avec une gravité ERREUR.

Toute aide serait grandement appréciée.

Répondre

8

La comparaison est erronée. Vous ne pouvez pas (fiable) comparer les chaînes sur son contenu avec ==. Lorsque vous comparez des objets avec ==, il ne retournera que true s'ils sont de la même référence, pas valeur comme vous semblez l'attendre. Les objets doivent être comparés avec Object#equals(). Mais vous pouvez comparer constantes avec ==. Les valeurs FacesMessage.Severity sont toutes des constantes statiques. Vous devriez plutôt comparer Severity avec Severity. De plus, le sysout est faux, il imprime l'itérateur au lieu du seul message.

Cela devrait fonctionner:

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

Habituellement, seules les constantes de ENUM sont conformes à comparer avec ==, les objets peuvent échouer. Utilisez severity1.getOrdinal() == severity2.getOrdinal() à la place. – Tires