3 Stimmen

Wie kann ich dynamische Attribute in JSP-Tag-Dateien verwenden?

Laut meinem JSP-Referenzbuch sowie jeder anderen Referenz, die ich im Internet finden kann, sollte ich also in der Lage sein, etwas wie folgt zu tun:

<%@ tag dynamic-attributes="dynamicAttributesVar" %>

und wenn dann jemand ein Attribut verwendet, das ich nicht in einer Attributrichtlinie definiert habe, sollte ich in der Lage sein, auf dieses Attribut über die "dynamicAttributesVar"-Map zuzugreifen:

<%= dynamicAttributesVar.get("someUnexpectedAttribute") %>

Allerdings funktioniert das nicht, überhaupt; ich bekomme nur eine "dynamicAttributesVar kann nicht aufgelöst werden" Fehler, wenn ich versuche.

Nun habe ich entdeckt (indem ich mir die generierte Java-Klasse für den Tag ansehe), dass ich eine funktionierende dynamische Attributvariable "hacken" kann, indem ich das tue:

<% Map dynamicAttributesVar = _jspx_dynamic_attrs; %>

Nun, dieser Hack funktioniert nicht, es sei denn, ich verwende auch den dynamic-attributes-Parameter auf meiner Tag-Direktive, so dass es scheint, dass der Parameter tut etwas .

Aber was ich wissen möchte, ist, wie kann ich es dazu bringen, das zu tun, was es für jeden anderen JSP-Benutzer da draußen tut?

5voto

Ich versuche nur, ein Abzeichen für die Beantwortung einer vier Jahre alten Frage zu bekommen.

Ich habe dieses Problem auch und bin auf folgende Hilfe gestoßen O'Reilly um JSTL anstelle von Scriptlets zu verwenden.

Der ursprüngliche Poster hätte diesen Code verwenden können, um alle Schlüssel/Werte zu erhalten:

<c:forEach items="${dynamicAttributesVar}" var="a"> 
${a.key}="${a.value}" 
</c:forEach> 

Dies würde einen bestimmten Wert ergeben:

<c:out value="${dynamicAttributesVar['someUnexpectedAttribute']}"/>

4voto

araqnid Punkte 116680

Ist "dynamicAttributesVar" nicht der Name des Schlüssels im Seitenkontext, in den die dynamischen Attribute eingefügt werden? Sie könnten also Folgendes tun

<c:out value="${dynamicAttributesVar.someUnexpectedAttributes}"/>

oder wenn Sie Scriptlets verwenden müssen:

Map dynamicAttributes = (Map) pageContext.getAttribute("dynamicAttributesVar")

(Disclaimer: Ich habe es nicht ausprobiert, ich habe nur dynamische Attribute in Tags mit direkten Java-Implementierungen verwendet... aber es scheint sinnvoll)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X