【问题标题】:jsf message severityjsf 消息严重性
【发布时间】:2010-02-22 19:16:28
【问题描述】:

我如何才能获取所有带有 SEVERITY 错误的消息。 我试过了:

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

这是正确的方法吗?它不会拦截具有 ERROR 严重性的消息。

任何帮助将不胜感激。

【问题讨论】:

    标签: jsf messages


    【解决方案1】:

    比较是错误的。您不能(可靠地)将其内容上的字符串与== 进行比较。在将对象与== 进行比较时,如果它们具有相同的reference,它只会返回true,而不是您所期望的value。对象需要与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);
        }
    }
    

    【讨论】:

    • 通常,只有枚举常量与 == 比较时一致,对象可能会失败。改为使用 severity1.getOrdinal() == severity2.getOrdinal()。
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 2013-10-21
    • 2014-02-05
    • 2015-01-05
    • 2021-12-13
    • 2019-02-26
    • 2020-07-11
    • 1970-01-01
    相关资源
    最近更新 更多