Domanda

Voglio fare qualcosa di simile per chiamare un tag JSP 2.0:

<mytags:foo abc="<%=def%>">
  <mytags:bar ghi="<%=jkl%>"/>
</mytags:foo>

Dove Strings def e jkl sono definiti earielr nel file jsp. Supponiamo che i miei file di tag simile a questa:

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>

Voglio l'uscita a guardare in questo modo:

<div class="def">
<div>jkl</div>
</div>

(assumendo che il def variabili e jkl stati inizializzato a def e jkl, rispettivamente, nel file JSP chiamando.)

Il tag esterno ottiene il suo attributo più che bene (<div class="def">), ma quella interna non riesce.

È possibile? Sto ottenendo gli errori che jkl non può essere risolto.

È stato utile?

Soluzione

Si noti l'attributo body-content="scriptless" nella direttiva tag. Ciò significa che il corpo circondato dal tag non può contenere codice scriptlet (la roba <% %>). È necessario utilizzare EL.

Funziona per me se cambio la roba in JSP per:

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

Si noti che ho bisogno di aggiungere <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top