この表現言語をご覧ください
styleClass="#{obj.validationErrorMap eq null ? ' ' :
obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
マップがヌルであっても、highlight_row
スタイルが適用されています。
だから私は
styleClass="#{empty obj.validationErrorMap ? ' ' :
obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
その時でさえ、 highlight_row
が適用されています。
マップがempty OR null
スタイルを適用したくない。
助けがありますか?そしてこの行動の理由は?
empty
(nullnessとemptynessの両方をチェックします)を使用し、ネストされた3進表現を括弧でグループ化します(ELは特定の実装/バージョン、つまりネストされた3進表現で多少問題があります)。したがって、そう:
styleClass="#{empty obj.validationErrorMap ? ' ' :
(obj.validationErrorMap.contains('key') ? 'highlight_field' : 'highlight_row')}"
それでも無駄な場合(JBoss EL設定を確認します)、「通常の」ELアプローチを使用します。
styleClass="#{empty obj.validationErrorMap ? ' ' :
(obj.validationErrorMap['key'] ne null ? 'highlight_field' : 'highlight_row')}"
Update:コメントによると、Map
は実際にはList
であることがわかります(名前の付け方に注意してください)規則)。 List
に「通常の」EL方法でアイテムが含まれているかどうかを確認するには、 [〜#〜] jstl [〜#〜]fn:contains
(明示的に文書化されていませんが、List
でも機能します)。
styleClass="#{empty obj.validationErrorMap ? ' ' :
(fn:contains(obj.validationErrorMap, 'key') ? 'highlight_field' : 'highlight_row')}"