我只是在JSF队列中有全局消息时才尝试显示一个块.
我尝试使用rendered="#{not empty facesContext.getMessageList(null)}",但它总是被评估为假.
我找到的唯一方法是创建一个自定义EL函数并在java中测试它.
例如.:我的功能:
public static boolean isFacesGlobalMessages() {
return ! FacesContext.getCurrentInstance().getMessageList(null).isEmpty();
}
Run Code Online (Sandbox Code Playgroud)
JSF页面:
<h:panelGroup class="block1" layout="block" rendered="#{el:isFacesGlobalMessages()}">
<div class="block-warn-body">
<rich:messages id="msg" globalOnly="true"/>
</div>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
我正在使用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)} - >错误:找不到方法messageList#{not empty facesContext.messageList} - >如果是验证错误则返回true(我只想在全局错误时为true)#{! facesContext.getMessageList(null).isEmpty()} - > throws IllegalAccessException:类javax.el.BeanELResolver无法使用修饰符"public"访问类java.util.Collections $ UnmodifiableCollection的成员Dan*_*iel 18
无需定制EL功能
试试这个
rendered="#{not empty facesContext.messageList}"
Run Code Online (Sandbox Code Playgroud)
编辑
我自己没试过,但试试吧
rendered="#{not empty facesContext.messageList(null)}"
Run Code Online (Sandbox Code Playgroud)
一个主意...
rendered="#{not facesContext.validationFailed and not empty facesContext.messageList}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13338 次 |
| 最近记录: |