Como posso dar expressões EL como parâmetros em jsp aninhada 2,0 tags?
Pergunta
Eu quero fazer algo parecido com isso para chamar uma tag JSP 2.0:
<mytags:foo abc="<%=def%>">
<mytags:bar ghi="<%=jkl%>"/>
</mytags:foo>
Onde Cordas def
e jkl
são definidos earielr no arquivo jsp. Suponha que meus arquivos de marca semelhante a este:
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>
Eu quero a saída para esta aparência:
<div class="def">
<div>jkl</div>
</div>
(assumindo que o variáveis ??def
e jkl
foram inicializados para def
e jkl
, respectivamente, no arquivo JSP chamando.)
A tag exterior recebe o atributo apenas multa (<div class="def">
), mas o interno falhar.
Isso é possível? Estou recebendo erros que jkl não pode ser resolvido.
Solução
Observe o atributo body-content="scriptless"
na directiva tag. Isto significa que o corpo rodeado pela tag não pode conter código scriptlet (o material <% %>
). Você precisa usar EL.
Ele funciona para mim se eu mudar as coisas no JSP para:
<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>
Note que eu preciso adicionar
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>