55

この式言語を参照してください

styleClass="#{obj.validationErrorMap eq null ? ' ' :  
     obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"

マップが null の場合でも、highlight_rowスタイルが適用されます。

だから私はに変更しました

styleClass="#{empty obj.validationErrorMap ? ' ' :  
     obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"

それでも、highlight_row適用されています。
マップの場合、empty OR nullスタイルを適用したくありません。

何か助けはありますか?この行動の理由は?

4

1 に答える 1

82

使用emptyして(nullと空の両方をチェックします)、ネストされた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')}"

更新:コメントによると、実際には(命名規則に取り組んでください)でMapあることが判明しました。「通常の」ELの方法でアイテムが含まれているListかどうかを確認するには、 JSTLを使用します(明示的に文書化されていませんが、同様に機能します)。List fn:containsList

styleClass="#{empty obj.validationErrorMap ? ' ' :  
 (fn:contains(obj.validationErrorMap, 'key') ? 'highlight_field' : 'highlight_row')}"
于 2010-02-05T13:07:34.733 に答える