Please see this Expression Language
styleClass="#{obj.validationErrorMap eq null ? ' ' :
obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
Even if the map is null, highlight_row
style is getting applied.
So I changed to
styleClass="#{empty obj.validationErrorMap ? ' ' :
obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
Even then, highlight_row
is getting applied.
if the map is empty OR null
I dont want any style to be applied.
Any help? and reasons for this behaviour?
Use
empty
(it checks both nullness and emptiness) and group the nested ternary expression by parentheses (EL is in certain implementations/versions namely somewhat problematic with nested ternary expressions). Thus, so:If still in vain (I would then check JBoss EL configs), use the "normal" EL approach:
Update: as per the comments, the
Map
turns out to actually be aList
(please work on your naming conventions). To check if aList
contains an item the "normal" EL way, use JSTLfn:contains
(although not explicitly documented, it works forList
as well).