Jedną z rzeczy, która zawsze mnie niepokoiła w związku z <jsp:include..>
jest to, że nie można przekazywać wartości innych niż String na dołączoną stronę jako odrębne dane wejściowe do strony. Na przykład, chciałbym, aby móc wykonać następujące czynności:Enchanced jsp: include implementation
<c:forEach var="item" items="${listOfItems}">
<jsp:include page="mypage.jsp">
<jsp:attribute name="item" value="${item}/>
</jsp:include>
</c:forEach>
Pomysł jest, że uznając element jest przekazywana jako atrybut wewnątrz jsp: include węzeł, kod jest jednoznaczne stwierdzenie, jaki był zamiar ... dostarczyć ten parametr do dołączonej strony.
Jedynym obecnie dostępnym mechanizmem jest zdefiniowanie atrybutu "globalnie", a następnie pozwolenie stronie dołączonej na odczytanie go z przestrzeni globalnej. Niestety, traci to ten sam "zamiar", który zapewnia < jsp: param >. Dodatkowo utrudnia kod debugowania, z tego samego powodu, który robią globale w dowolnym środowisku programistycznym.
Czy ktoś wie o implementacji mechanizmu włączania, który wykonuje funkcje jsp: include, ale pozwala przekazywać wartości inne niż String? Lub, jeśli nie, byłbym otwarty na alternatywne pomysły, które zachowałyby ten sam cel intencji i łatwość debugowania.
Na marginesie, chciałbym zobaczyć wbudowane „złapać” mechanizm, gdy włączone strona zgłasza błąd:
<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>
Czuję, że źle oznaczam własną odpowiedź jako "odpowiedź", ale naprawdę nie dostałem tego, czego szukałem gdzie indziej. Podano użyteczne informacje, ale musiałem połączyć je i wykorzystać do opracowania własnej implementacji. – RHSeeger