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
Mapturns out to actually be aList(please work on your naming conventions). To check if aListcontains an item the “normal” EL way, use JSTLfn:contains(although not explicitly documented, it works forListas well).