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>
Mojarra 2.1.5 を使用しています。
何か不足していますか?ありがとう !
編集:次の提案を試みましたが、これまでのところ運がありません:
#{not empty facesContext.getMessageList(null)}
-> 常に false#{! facesContext.getMessageList(null)}
-> エラー#{! empty facesContext.getMessageList(null)}
-> 常に false#{fn:length(facesContext.getMessageList(null)) > 0}
-> 常に false#{not empty facesContext.messageList(null)}
-> エラー: メソッド messageList が見つかりません#{not empty facesContext.messageList}
- >検証エラーの場合はtrueを返します(グローバルエラーでのみtrueが必要です)#{! facesContext.getMessageList(null).isEmpty()}
-> IllegalAccessException をスローします: クラス javax.el.BeanELResolver は、修飾子 "public" を持つクラス java.util.Collections$UnmodifiableCollection のメンバーにアクセスできません