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?