tag switch example choose jsp foreach jstl scope jspinclude

jsp - switch - jstl label



Pasando c: forEach variable a un jsp: include (2)

RESPUESTA: Terminé teniendo que hacer esto para que funcione.

<c:forEach items="${cart.entries}" var="entry"> <c:set var="entryFC" value="${entry}" scope="request"></c:set> <jsp:include page="helper.jsp"></jsp:include> </c:forEach>

Entonces hice referencia a la entryFC en mi incluir. No es muy elegante en absoluto, pero está funcionando, así que supongo que iré mal con él.

Estoy tratando de acceder a algunas variables JSTL que se establecieron en un bucle for JSTL en una inclusión.

Ejemplo:

<c:forEach items="${cart.entries}" var="entry"> <jsp:include page="helper.jsp"></jsp:include> </c:forEach>

Dentro de helper.jsp quiero poder hacer referencia a la variable ''entrada''. Sigue apareciendo como ''vacío''. Pensé que tal vez podría haber una manera de agregar un alcance a la variable forEach, como puede hacerlo con las variables establecidas normales.

¿Algunas ideas?


Sé que es muy tarde para responder a esta pregunta, pero puede ser útil para aquellos que se atascan en esta situación y buscan respuestas.

Mi respuesta funcionará si no está obligado a utilizar la etiqueta <jsp: include> para incluir jsp. En su lugar, puede usar <%@include file="/WEB-INF/views/path-to-jsp.jsp" %> para importar otro jsp en la página y esta página puede usar su variable de bucle de etiqueta <c:forEach> .

Por ejemplo.

<c:forEach items="${users}" var="user"> <%@include file="/WEB-INF/views/path-to-jsp.jsp" %> <!-- here ${user} can be use in importing jsp file. --> </c:forEach>

Funciona porque la etiqueta <%@include file="" %> inyectará el contenido del archivo nombrado en la JSP que contiene la etiqueta, como si se hubiera copiado y pegado. Esto se hace antes de que se analice el contenido del archivo incluido, en lugar de analizarlo mientras se analiza el JSP que contiene. Esto es más parecido a una directiva C #include, donde durante el preprocesamiento, el archivo incluido se "pega" en su lugar antes de compilarlo. Una vez que se incluye el contenido, se evalúa, todo en el mismo contexto y, por lo tanto, con los mismos accesos y restricciones que tendría el código incluido si el contenido simplemente se escribiera en su lugar.

Considerando que, <jsp:include page=""/> etiqueta se comporta de manera diferente en que el resultado de la representación de la página especificada se inyecta en el JSP que contiene en el punto de la etiqueta. Esto se hace esencialmente enviando la página solicitada al mismo contenedor, como una solicitud de representación por separado, y tomando los resultados, no el contenido del archivo. Esta solicitud se realiza en su propio contexto, lo que significa que no utiliza la misma información de página que la página que contiene la etiqueta. Esto puede ser útil, especialmente si el contenido incluido puede tener variables en conflicto, por ejemplo.