2009-02-10 8 views
3

Je veux faire quelque chose comme ça pour appeler une balise JSP 2.0:Comment puis-je donner des expressions EL en tant que paramètres dans les balises jsp 2.0 imbriquées?

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

où les chaînes def et jkl sont définis 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 la sortie de ressembler à ceci:

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

(en supposant que les variables def et étaient en numérotés à def et jkl, respectivement, dans le fichier JSP appelant.)

La balise externe obtient son attribut très bien (<div class="def">) mais la balise interne échoue.

Est-ce possible? Je reçois des erreurs que jkl ne peut pas être résolu.

Répondre

4

Notez l'attribut body-content="scriptless" dans la directive tag. Cela signifie que le corps entouré par l'étiquette ne peut pas contenir de code de script (le <% %>). 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" %>