【问题标题】:Check in JSF EL what severity messages are shown检查 JSF EL 显示的严重性消息
【发布时间】:2023-03-11 04:49:01
【问题描述】:

我想知道使用 EL 在当前页面中显示了什么样的消息。我对高于警告严重性的错误特别感兴趣。 我目前的解决方案是这样的:

#{ facesContext.getMaximumSeverity().getOrdinal() ge 2}

但我想要一个更好的(更安全、更明确),像这样:

#{facesContext.getMaximumSeverity() != null and facesContext.getMaximumSeverity().compareTo(facesMessage.SEVERITY_WARN)>0}

问题是我无法从 facesMessage.SEVERITY_WARN 中获得任何价值。有人可以帮我弄这个吗?谢谢。

【问题讨论】:

    标签: jsf jsf-2 el


    【解决方案1】:

    在即将发布的EL 3.0 之前,您不能在 EL 中引用常量。

    至于开源库,唯一可以帮助您的是OmniFaces。它为此提供了<o:importConstants> 标签。

    <o:importConstants type="javax.faces.application.FacesMessage" />
    

    这样你就可以使用了

    #{facesContext.maximumSeverity eq FacesMessage.SEVERITY_ERROR or facesContext.maximumSeverity eq FacesMessage.SEVERITY_FATAL}
    

    #{facesContext.maximumSeverity.compareTo(FacesMessage.SEVERITY_WARN) gt 0}
    

    #{facesContext.maximumSeverity.compareTo(FacesMessage.SEVERITY_ERROR) ge 0}
    

    #{facesContext.maximumSeverity.ordinal gt FacesMessage.SEVERITY_WARN.ordinal}
    

    #{facesContext.maximumSeverity.ordinal ge FacesMessage.SEVERITY_ERROR.ordinal}
    

    (注意我省略了不必要的 get 前缀和 () 括号,EL 中的 IDE 自动完成不一定会生成正确且干净的代码)

    【讨论】:

    • 谢谢。我真的很喜欢最后一个解决方案:#{facesContext.maximumSeverity.ordinal ge FacesMessage.SEVERITY_ERROR.ordinal}
    • 如果您受困于 JSF 1.2,Apache 的非标准库也允许对常量进行类似的访问。 blog.tallan.com/2010/07/01/…
    猜你喜欢
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多