Una de las cosas que siempre me ha molestado acerca de <jsp:include..>
es que no es posible pasar valores que no sean cadenas a la página incluida como entradas distintas a la página. Por ejemplo, me gustaría ser capaz de hacer lo siguiente:jsp modificado: incluir implementación
<c:forEach var="item" items="${listOfItems}">
<jsp:include page="mypage.jsp">
<jsp:attribute name="item" value="${item}/>
</jsp:include>
</c:forEach>
La idea es que, al declarar el elemento que se pasa como un atributo dentro de la jsp: include nodo, el código está haciendo más clara cuál era el intento ... de suministrar ese parámetro a la página incluida.
El único mecanismo actualmente disponible para hacer esto es definir el atributo "globalmente" y luego dejar que la página incluida lo lea desde el espacio global. Desafortunadamente, esto pierde el mismo "intento" que el que proporciona < jsp: param >. Además, hace que el código sea más difícil de depurar, por la misma razón que lo hacen los globales en cualquier entorno de programación.
¿Alguien sabe de una implementación de un mecanismo de inclusión que realiza las funciones de jsp: incluir, pero permite pasar en valores que no sean cadenas? O, si no, estaría abierto a ideas alternativas que conserven el mismo objetivo de intento y facilidad de depuración.
Como nota al margen, me gustaría ver un mecanismo incorporado "captura" para cuando la página incluida genera un error:
<abc:include page="mypage">
<abc:param name="something" value="some string value"/>
<abc:attribute name="somethingelse" value="${nonStringValue}"/>
<abc:catch var="ex">
The page failed, so the content it generated will not be sent to the output
stream. Instead, we can collapse the part of the page that it's content
would be... possibly putting a comment in the page with
<!-- There was an exception generating this module:
<c:out value="${ex.getMessage}/>
-->
</abc:catch>
</abc:include>
Entonces, me siento mal al marcar mi propia respuesta como "la respuesta", pero realmente no obtuve lo que estaba buscando en otro lado. Se proporcionó información útil, pero terminé teniendo que combinarla y usarla para desarrollar mi propia implementación. – RHSeeger