我只在JSF隊列中存在全局消息時才試圖顯示一個塊。使用EL來測試全局消息存在的JSF
我試圖使用rendered="#{not empty facesContext.getMessageList(null)}"
,但它總是評估爲false。
我發現的唯一方法是創建一個自定義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>
我用鑽嘴魚科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(我只希望在全局錯誤真)#{! facesContext.getMessageList(null).isEmpty()}
- >拋出IllegalAccessException:類javax.el.BeanELResolver不能訪問類java.util.Collections中的$ UnmodifiableCollection成員使用修改 「公共」
您是否試圖按照與您的功能相同的方式編寫它。 EL意識到!運營商。 – Paranaix 2012-07-31 09:09:50
謝謝!剛剛嘗試(見上面的編輯),但它沒有奏效 – gonzalad 2012-07-31 18:10:51
@gonzalad,不知道它是否適合你,但我更新了我的答案... – Daniel 2012-07-31 18:44:49