2009-07-22 6 views
3

Ich habe eine Reihe von JSP-Tags, die verwendet werden dynamische Attribute für beliebige HTML ermöglichen Attribute ihnen in übergeben werden, wie folgt aus:Dynamische Attribute zwischen JSP-Tags übergeben?

<%-- tag named a:div --%> 
<%@ tag dynamic-attributes="attrs" %> 
<div <c:forEach var="attr" items="${attrs}"> ${attr.key}="${attr.value}"</c:foreach>> 
</div> 

Ich habe dann einen anderen Tag, das ich weitergeben können wollen dynamic-attributes zu & haben es nur übergeben sie auf das oben genannte Tag. Etwas wie:

<%-- tag using a:div --%> 
<%@ tag dynamic-attributes="attrs" %> 
<a:div class='big' attrs="${attrs}"/> 

Aber attrs = "$ {attrs}" nicht tut, was ich will. Irgendwelche Ideen?

Antwort

3

Ich glaube nicht, dass dies möglich ist, leider. Das Objekt "attrs" ist hier ein java.util.Map, und es gibt keine Möglichkeit, das zurück zu explodieren.

Die Alternative besteht darin, dass Ihr <a:div>-Tag ein Map-Attribut annehmen kann, das diese dynamischen Attribute darstellt. Vielleicht könnte <a:div> sowohl dynamische Attribute unterstützen als auch eine Karte von woanders übergeben haben, und sie mit <c:choose> oder ähnlich behandeln?

+0

Hm, schade. Dies ist wahrscheinlich, was ich am Ende tun werde, wenn ich diesen Weg am Ende gehe. Ich hatte einige Probleme damit und konnte es nicht zur Arbeit bringen. – oconnor0

+0

Ich habe diese Lösung erfolgreich angewendet, indem ich sowohl dynamische Attribute UND ein einzelnes 'java.util.Map'" Dynattrs "-Attribut unterstützt habe. Der Code wird zu