listar lenguaje language jtls formulario expresiones ejemplos curso java jsf el

lenguaje - jtls java



comprobación nula en lenguaje de expresión jsf (1)

Por favor vea este Lenguaje de Expresión

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

Incluso si el mapa es nulo, se aplicará el estilo de highlight_row .

Entonces cambié a

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

Incluso entonces, highlight_row se está aplicando.
si el mapa está empty OR null , no quiero que se aplique ningún estilo.

¿Alguna ayuda? y las razones de este comportamiento?


Use empty (comprueba la nulidad y el vacío) y agrupe la expresión ternaria anidada entre paréntesis (EL está en ciertas implementaciones / versiones, es decir, un tanto problemática con expresiones ternarias anidadas). Por lo tanto, así que:

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

Si todavía es en vano (yo verificaría las configuraciones de JBoss EL), use el enfoque EL "normal":

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

Actualización : según los comentarios, el Map resulta ser realmente una List (trabaje en sus convenciones de nombres). Para verificar si una List contiene un elemento de la forma EL "normal", use JSTL fn:contains (aunque no está documentado explícitamente, también funciona para List ).

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