Saltar al contenido

Cómo pasar un objeto usando jsp: incluya la etiqueta param en otro jsp

Solución:

No creo que realmente quieras archivos de etiquetas aquí. Eso es demasiado y demasiado confuso para lo que quieres lograr. Necesita dedicar tiempo a comprender el “alcance”. En lugar de etiquetar archivos, yo haría lo siguiente:

1) Cambie su atributo para que esté en el alcance de la “solicitud” en lugar del alcance predeterminado de la “página” cambiando esta línea:

<c:forEach items="${attributeDTOList}" var="attribute" varStatus="status">

a esto

<c:forEach items="${attributeDTOList}" var="attribute" varStatus="status">
    <c:set var="attribute" value="${attribute}" scope="request"/>

Eso hará que “atributo” sea una variable “requestScope” que se puede usar en otros archivos JSP que son c: importados. (Nota: forEach no admite el atributo de alcance, así que use c: set para establecer el alcance dentro de cada iteración).

2) Cambie su jsp: include original ac: import. Así que cámbialo de:

<jsp:include page="attributeSubFeatureRemove.jsp" >
    <jsp:param name="attribute" value="${attribute}" />
</jsp:include>

a esto

<c:import url="attributeSubFeatureRemove.jsp"/>

Tenga en cuenta que no intentamos explícitamente pasar el atributo como parámetro, porque ya lo hemos puesto a disposición de todas las páginas importadas de c: en el “requestScope”.

3) Modifique su c: JSP importado para hacer referencia al atributo usando requestScope cambiando esto:

<c:set value="${param.attribute}" var="attribute" />
<c:forEach items="${attribute.subFeatures}" var="subAttribute">

a esto

<c:forEach items="${requestScope.attribute.subFeatures}" var="subAttribute">

Aquí ya no necesitamos el c: set porque ya tiene el atributo disponible. Solo tenemos que asegurarnos de buscar en requestScope esa variable, en lugar de en el pageScope predeterminado o como un parámetro (porque ya no lo estamos pasando como un parámetro).

Esta técnica le resultará mucho más fácil de manejar.

No puede pasar directamente un objeto usando jsp: incluya la etiqueta param en otro jsp.

Sin embargo, puede pasar el NOMBRE de ese atributo (como una cadena) usando jsp: incluir la etiqueta param en otro jsp. Luego, en el jsp incluido, puede obtener ese atributo por su nombre de requestScope.

en su JSP principal:

<c:forEach items="${items}" var="item" varStatus="status">  
     <jsp:include page="attributeSubFeatureRemove.jsp" >
         <jsp:param name="objName" value="item" />
     </jsp:include>
</c:forEach>

en attributeSubFeatureRemove.jsp:

object's name = ${param.objName}
object itself = ${requestScope[param.objName]}

Just for an easier access:
<c:set var="obj" value="${requestScope[param.objName]}" scope="page"></c:set>
obj=${obj}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *