Ответ 1
Используйте empty
(он проверяет как нулевость, так и пустоту) и группирует вложенное трехмерное выражение в круглых скобках (EL находится в определенных реализациях/версиях, а именно, несколько проблематично с вложенными тернарными выражениями). Таким образом, так:
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
оказывается фактически List
(пожалуйста, используйте свои соглашения об именах). Чтобы проверить, содержит ли элемент List
элемент "обычный" EL, используйте JSTL fn:contains
(хотя он явно не задокументирован, он работает и для List
).
styleClass="#{empty obj.validationErrorMap ? ' ' :
(fn:contains(obj.validationErrorMap, 'key') ? 'highlight_field' : 'highlight_row')}"