Wie kann ich geben EL Ausdrücke als Parameter in 2.0-Tags jsp verschachtelten?
Frage
Ich mag so etwas tun, um einen JSP 2.0-Tag zu nennen:
<mytags:foo abc="<%=def%>">
<mytags:bar ghi="<%=jkl%>"/>
</mytags:foo>
Wo Strings def
und jkl
sind earielr in der jsp-Datei definiert. Angenommen, mein Tag-Dateien wie folgt aussehen:
foo.tag
:
<%@ tag body-content="scriptless" %>
<%@ attribute name="abc" required="true" %>
<div class="${abc}">
<jsp:doBody/>
</div>
bar.tag
:
<%@ tag body-content="scriptless" %>
<%@ attribute name="ghi" required="true" %>
<div>${ghi}</div>
Ich möchte die Ausgabe wie folgt aussehen:
<div class="def">
<div>jkl</div>
</div>
(vorausgesetzt, die Variablen def
und jkl
wurde initialisiert def
und jkl
jeweils in der anrufenden JSP-Datei.)
Das äußere Tag bekommt ihr Attribut just fine (<div class="def">
), aber die innere ausfällt.
Ist das möglich? Ich erhalte Fehler, die jkl kann nicht aufgelöst werden.
Lösung
Beachten Sie das body-content="scriptless"
Attribut in der Tag-Richtlinie. Dies bedeutet, dass der Körper durch den Tag umgeben nicht scriptlet Code (die <% %>
Sachen) enthalten kann. Sie müssen EL verwenden.
Es funktioniert für mich, wenn ich die Sachen in der JSP zu ändern:
<c:set var="def" value="def"></c:set>
<c:set var="jkl" value="jkl"></c:set>
<mytags:foo abc="${def}">
<mytags:bar ghi="${jkl}"/>
</mytags:foo>
Beachten Sie, dass ich muss hinzufügen
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>