Используйте 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')}"