2010-02-22 69 views
3

我如何能夠使用SEVERITY獲取所有消息僅爲ERROR。 我試過了:jsf消息嚴重性

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

這是正確的嗎?它不會攔截具有ERROR嚴重性的郵件。

任何幫助將不勝感激。

回答

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); 
    } 
} 
+0

通常,只有枚舉常數符合==來比較,對象可能會失敗。請改用severity1.getOrdinal()== severity2.getOrdinal()。 – Tires 2013-11-28 05:11:42