Come posso dare espressioni EL come parametri in nidificati jsp tag 2.0?
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.
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" %>