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}