Pregunta

Vi un código como el siguiente en un JSP

<c:if test="<%=request.isUserInRole(RoleEnum.USER.getCode())%>">
    <li>user</li>
</c:if>

Mi confusión es por el "=" que aparece en el valor del test atributo.Entendí que cualquier cosa incluida dentro <%= %> se imprime en la salida, pero seguramente el valor asignado a la prueba debe ser booleano, entonces, ¿por qué funciona esto?

Para obtener puntos de bonificación, ¿hay alguna forma de cambiar el valor del atributo anterior de modo que no utilice código scriptlet?Presumiblemente, eso significa usar EL en su lugar.

Saludos, Don

¿Fue útil?

Solución

Todo lo que el test El atributo que busca para determinar si algo es verdadero es la cadena "verdadero" (no distingue entre mayúsculas y minúsculas).Por ejemplo, el siguiente código imprimirá "¡Hola mundo!"

<c:if test="true">Hello world!</c:if>

El código dentro del <%= %> devuelve un valor booleano, por lo que imprimirá la cadena "verdadero" o "falso", que es exactamente lo que <c:if> etiqueta busca.

Otros consejos

También puedes usar algo como

<c:if test="${ testObject.testPropert == "testValue" }">...</c:if>

La expresión entre <%= %> se evalúa antes de que se evalúe la etiqueta c:if.Entonces, suponiendo que | request.isuserinrole | devuelve | verdadero |, su ejemplo se evaluaría a esto primero:

<c:if test="true">
    <li>user</li>
</c:if>

y luego se ejecutaría la etiqueta c:if.

Los atributos de las bibliotecas de etiquetas JSP en general pueden ser estáticos o resolverse en el momento de la solicitud.Si se resuelven en el momento de la solicitud, JSP resolverá su valor en tiempo de ejecución y pasará el resultado a la etiqueta.Esto significa que puede poner prácticamente cualquier código JSP en el atributo y la etiqueta se comportará de acuerdo con el resultado que produzca.

Si observa los documentos jstl taglib, puede ver qué atributos son los más solicitados y cuáles no. http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/index.html

<%=%> por sí solo se enviará a la salida, en el contexto del JSTL se evaluará como una cadena

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top