Como posso dar expressões EL como parâmetros em jsp aninhada 2,0 tags?

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

  •  22-08-2019
  •  | 
  •  

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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top