Ich weiß, dass es sehr spät ist, um auf diese Frage zu antworten, aber es könnte hilfreich sein für diejenigen, die in dieser Situation feststecken und nach Antworten suchen.
Meine Antwort wird funktionieren, wenn Sie nicht strikt an die Verwendung des Tags gebunden sind, um jsp einzubinden. Stattdessen können Sie <%@include file="/WEB-INF/views/path-to-jsp.jsp" %>
verwenden, um eine andere jsp in die Seite zu importieren, und diese Seite kann Ihr Tag-Schleifenvariable verwenden.
Zum Beispiel.
<%@include file="/WEB-INF/views/path-to-jsp.jsp" %>
Es funktioniert, weil das <%@include file="" %>
Tag die Inhalte der benannten Datei in die enthaltene JSP einfügt, als ob sie kopiert und eingefügt worden wären. Dies geschieht, bevor der Inhalt der eingefügten Datei analysiert wird, anstatt während die enthaltene JSP analysiert wird. Dies ähnelt eher einer C #include Direktive, bei der während des Preprocessing die eingefügte Datei an ihren Platz "eingefügt" wird, bevor die Datei kompiliert wird. Nach dem Einfügen wird der Inhalt bewertet, alles im selben Kontext und daher mit denselben Zugriffen und Einschränkungen, die der eingefügte Code hätte, wenn die Inhalte einfach an Ort und Stelle eingegeben würden.
Im Gegensatz dazu verhält sich das Tag anders, indem das Ergebnis des Renderns der angegebenen Seite in die enthaltene JSP an dem Punkt des Tags eingefügt wird. Dies geschieht, indem die angeforderte Seite praktisch demselben Container als separate Renderequst übermittelt wird und die Ergebnisse, nicht die Inhalte der Datei. Diese Anfrage erfolgt in ihrem eigenen Kontext, was bedeutet, dass sie nicht dieselben Seiteninformationen wie die Seite verwendet, die das Tag enthält. Dies kann nützlich sein, insbesondere wenn der eingefügte Inhalt möglicherweise konfliktierende Variablen hat, zum Beispiel.