4

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

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

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

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

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

4

1 回答 1

9

在即将到来的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 自动完成不一定会生成正确且干净的代码)

于 2013-05-31T12:34:10.427 回答