仅当 JSF 队列中有全局消息时,我才尝试显示一个块。
我尝试使用rendered="#{not empty facesContext.getMessageList(null)}"
,但它总是被评估为假。
我发现的唯一方法是创建一个自定义 EL 函数并在 java 中测试它。
例如。: 我的 el 函数:
public static boolean isFacesGlobalMessages() {
return ! FacesContext.getCurrentInstance().getMessageList(null).isEmpty();
}
JSF 页面:
<h:panelGroup class="block1" layout="block" rendered="#{el:isFacesGlobalMessages()}">
<div class="block-warn-body">
<rich:messages id="msg" globalOnly="true"/>
</div>
</h:panelGroup>
我正在使用 Mojarra 2.1.5。
我错过了什么吗?谢谢 !
编辑:尝试了以下建议,但到目前为止没有运气:
#{not empty facesContext.getMessageList(null)}
-> 总是假的#{! facesContext.getMessageList(null)}
-> 错误#{! empty facesContext.getMessageList(null)}
-> 总是假的#{fn:length(facesContext.getMessageList(null)) > 0}
-> 总是假的#{not empty facesContext.messageList(null)}
-> 错误:找不到方法消息列表#{not empty facesContext.messageList}
-> 如果是验证错误,则返回 true(我只希望全局错误为 true)#{! facesContext.getMessageList(null).isEmpty()}
-> 抛出 IllegalAccessException:类 javax.el.BeanELResolver 无法访问带有修饰符“public”的类 java.util.Collections$UnmodifiableCollection 的成员