vi algo de código como el siguiente en un JSPatributo test en JSTL <c:if> etiqueta
<c:if test="<%=request.isUserInRole(RoleEnum.USER.getCode())%>">
<li>user</li>
</c:if>
Mi confusión es el "=" que aparece en el valor del atributo test
. Según tengo entendido, cualquier cosa incluida en <%= %>
se imprime en la salida, pero seguramente el valor asignado para la prueba debe ser booleano, entonces, ¿por qué funciona esto?
Para puntos de bonificación, ¿hay alguna forma de cambiar el valor de atributo anterior para que no use el código scriptlet? Presumiblemente, eso significa usar EL en su lugar.
Saludos, Don
<%= => que se imprime a la salida sólo si aparece fuera de una etiqueta JSP, como a continuación una respuesta dijo. Sin embargo, * no * se evalúa a una cadena sino que se convierte al tipo que el atributo espera. El atributo 'test' de la etiqueta' 'es de tipo' boolean', por lo que cualquier expresión que devuelva scriptlet será forzada a 'boolean'. –
mksios
Aunque es interesante ver que si mezcla string y scriptlet dentro de un atributo de etiqueta JSP, el motor se confunde e interpreta todo el valor como una cadena. Es decir, '' no ejecutará el scriptlet sino que coaccionará la cadena 'abc <%= true %>' a un booleano vía 'Boolean.valueOf()' que devuelve 'false'. http://stackoverflow.com/questions/8168821/comparing-string-and-boolean-in-expression-language –
mksios