tag lib java jsp jstl scriptlet

lib - Cómo pasar las variables de Java de scriptlets a c: cuando la expresión en jstl?



jstl if (2)

¿Cuál es una forma adecuada de usar variables de scriptlets en jstl? No sé lo que está mal en mi código:

<% boolean a = true; boolean b = false; %> <c:choose> <c:when test="${a}"> <c:set var="x" value="It''s true"/> </c:when> <c:when test="${b}"> <c:set var="x" value="It''s false"/> </c:when> </c:choose>

Parece que no entra en el bloque completo.


El alcance predeterminado de JSP es página. si desea usar la variable de scriplet para JSTL use el siguiente código.

<% boolean a = true; boolean b = false; pageContext.setAttribute("a", a); pageContext.setAttribute("b", b); %>

Entonces será utilizable en JSTL.


Las variables en scriptlets no se pueden ver en JSTL porque el lenguaje de expresión, el material entre ${} utilizado en JSTL, buscará atributos en la página, solicitud, sesión o aplicación. Al menos debe almacenar la variable de scriptlet en uno de estos ámbitos y luego usarla.

Esto es un ejemplo:

<% boolean a = true; request.setAttribute("a", a); %> <c:if test="${a}"> <c:out value="a was found and it''s true." /> </c:if>

Más información:

  • Idioma de Expresión Wiki de
  • Wiki JSTL

Como recomendación, deja de usar scriptlets. Mueva la lógica de negocios en su JSP al controlador y la lógica de vista en EL, JSTL y otras etiquetas como <display> . Más información: ¿Cómo evitar código Java en archivos JSP?