Wie kann ich geben EL Ausdrücke als Parameter in 2.0-Tags jsp verschachtelten?

StackOverflow https://stackoverflow.com/questions/533938

  •  22-08-2019
  •  | 
  •  

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.

War es hilfreich?

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" %>

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top