Comment puis-je donner des expressions EL en tant que paramètres dans la version 2.0 balises imbriquées?

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

  •  22-08-2019
  •  | 
  •  

Question

Je veux faire quelque chose comme ça pour appeler une balise JSP 2.0:

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

Où sont définis def et jkl Strings earielr dans le fichier jsp. Supposons que mes fichiers de balises ressemblent à ceci:

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>

Je veux que la sortie ressemble à ceci:

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

(en supposant que les variables def et jkl ont été initialisé à def et jkl, respectivement, dans le fichier JSP appelant.)

La balise externe obtient son attribut très bien (<div class="def">), mais l'intérieure échoue.

Est-ce possible? Je reçois des erreurs qui JKL ne peuvent être résolus.

Était-ce utile?

La solution

Notez l'attribut body-content="scriptless" dans la directive tag. Cela signifie que le corps est entouré par la balise ne peut pas contenir du code scriptlet (le stuff <% %>). Vous devez utiliser EL.

Il fonctionne pour moi si je change les choses dans la JSP:

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

Notez que je dois ajouter <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top