检查JSF EL中显示的严重性消息

时间:2013-05-31 12:11:35

标签: jsf jsf-2 el

我想知道使用EL在当前页面中显示哪种消息。我对警告严重程度以上的错误特别感兴趣。 我目前的解决方案是:

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

但我想要一个更好的(更安全,更明确),如下所示:

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

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

1 个答案:

答案 0 :(得分:7)

在即将到来的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前缀和() parens,EL中的IDE自动完成不一定会生成正确和干净的代码)