null check in JSF expression language
Zobacz ten język wyrażeń
styleClass="#{obj.validationErrorMap eq null ? ' ' :
obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
Nawet jeśli mapa jest null, styl highlight_row
zostanie zastosowany.
Więc zmieniłem na
styleClass="#{empty obj.validationErrorMap ? ' ' :
obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
Nawet wtedy, highlight_row
jest stosowany.
jeśli mapa jest empty OR null
nie chcę stosować żadnego stylu.
1 answers
Użyj empty
(sprawdza zarówno nullness, jak i Empty) i pogrupuj zagnieżdżone wyrażenie trójkowe według nawiasów (EL jest w niektórych implementacjach/wersjach, a mianowicie nieco problematyczne z zagnieżdżonymi wyrażeniami trójkowymi). Tak więc:
styleClass="#{empty obj.validationErrorMap ? ' ' :
(obj.validationErrorMap.contains('key') ? 'highlight_field' : 'highlight_row')}"
Jeśli nadal na próżno (sprawdziłbym wtedy JBoss el configs), użyj "normalnego" podejścia EL:
styleClass="#{empty obj.validationErrorMap ? ' ' :
(obj.validationErrorMap['key'] ne null ? 'highlight_field' : 'highlight_row')}"
Update: zgodnie z komentarzami, Map
okazuje się być List
(Proszę popracować nad konwencjami nazewnictwa). Aby sprawdzić, czy a List
zawiera element "normalny" sposób EL, użyj JSTL fn:contains
(chociaż nie jest to wyraźnie udokumentowane, działa również dla List
).
styleClass="#{empty obj.validationErrorMap ? ' ' :
(fn:contains(obj.validationErrorMap, 'key') ? 'highlight_field' : 'highlight_row')}"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-05 13:26:41