51 votes

contrôle nul en langage d'expression jsf

S'il vous plaît voir cette langue d'expression

 styleClass="#{obj.validationErrorMap eq null ? ' ' :  
     obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
 

Même si la carte est nulle, le style highlight_row est appliqué.

Alors j'ai changé pour

 styleClass="#{empty obj.validationErrorMap ? ' ' :  
     obj.validationErrorMap.contains('key')?'highlight_field':'highlight_row'}"
 

Même alors, highlight_row est appliqué.
si la carte correspond à empty OR null je ne souhaite appliquer aucun style.

De l'aide? et les raisons de ce comportement?

78voto

BalusC Points 498232

Utiliser empty (il vérifie à la fois nullness et le vide) et le groupe imbriqué ternaire de l'expression entre parenthèses (EL, dans certaines implémentations/versions à savoir un peu problématique avec imbriqué ternaire des expressions). Ainsi, afin de:

styleClass="#{empty obj.validationErrorMap ? ' ' :  
 (obj.validationErrorMap.contains('key') ? 'highlight_field' : 'highlight_row')}"

Si elle est encore en vain (je ne puis vérifier JBoss EL configs), utiliser la fonction "normale" EL approche:

styleClass="#{empty obj.validationErrorMap ? ' ' :  
 (obj.validationErrorMap['key'] ne null ? 'highlight_field' : 'highlight_row')}"

Mise à jour: selon les commentaires, l' Map s'avère en fait être un List (merci de travailler sur vos conventions de nommage). Pour vérifier si un List contient un élément "normal" EL, utilisez la JSTL fn:contains (bien que n'étant pas explicitement documentées, il travaille pour List également).

styleClass="#{empty obj.validationErrorMap ? ' ' :  
 (fn:contains(obj.validationErrorMap, 'key') ? 'highlight_field' : 'highlight_row')}"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X