JSP JSTL innerhalb Tag-Attribut

jdev

Mitglied
Hello together, I am it!

Habe ein selbst codiertes custom Tag innerhalb dem ich JSTL-Tags einsetzen will.
Das Problem ist dass ich als Wert (m)eines Tag-Attributs kein anderes Tag (konkret JSTL XML) angeben kann.

Ich würde es gerne so angeben:
<tc:labelledInput type="select" ... selectedOption="<x😱ut select="$mod/Modulstatus/@Status"/>" />

aber hier bekomme ich "Unterminated &lt;tc:labelledInput tag".

($mod ist ein Teilbaum meines geparsten XMLs)

Meine bisherige Lösung - die ich aber für nicht praktikabel halte da viel Code-Overhead:
Ich muss vor jedem "Aufruf" von tc:labelledInput eine Variable setzen, die ich dann in meinem Tag einsetzen kann:

<c:set var="modulstatusId"><x😱ut select="$mod/Modulstatus/@Status"/></c:set>
<tc:labelledInput type="select" ... selectedOption="${modulstatusId}" />

Meine Frage: gibt's eine Syntax, sodass ich mir die Variablendefinition sparen kann, also innerhalb meines Tag-Attributs auf mein XML zugreifen kann - möglichst ohne nun mit Java-Scriptlets zu arbeiten, sondern mit EL oder sonstwas?

Die TLD:
<taglib>
<tlibversion>1.1</tlibversion>
<jspversion>2.0</jspversion>
...
<tag>
<name>labelledInput</name>
<tagclass>i.dont.tell.you.taglib.LabelledInput</tagclass>
<bodycontent>scriptless</bodycontent>
<attribute>
<name>selectedOption</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>

Arbeite mit Tomcat 5.5.

Danke!
 
Hi!
Sehe, dass doch Einige die Frage angeschaut haben. Ist wohl ein sehr spezielles Thema.
Habe ich meine Fragestellung klar ausgedrückt?

Gibt es nicht die Möglichkeit, JSTL-Tags als EL-Funktionsaufrufe zu spezifizieren? Bin mir nicht sicher ob ich das richtig im Sinn habe, habe nichts Entsprechendes googlen können.
 
Habe mittlerweile herausgefunden, dass man ein (XML-)Tag innerhalb eines Custom-Tags mittels <jsp:attribute> einbringen kann.
Beispiel-JSP-Code:

Code:
<tc:labelledInput type="select" cssClass="modElement" id="Modul-Verantwortlich" label="Modul-Verantwortlicher"
  name="Modul-Role_Verantwortlich-Person-Personid" optionsXml="${personList}">
  <jsp:attribute name="selectedOption"><x:out select="$mod/Person[@Role='Verantwortlich']/@Personid"/></jsp:attribute>
</tc:labelledInput>

Außerdem hab ich in mein Custom Tag eingebaut, dass ich das Value-Member meines Custom-Tag-Objekts statt über das Tag-Attribut (value="wert") mittels Tag-Body befüllen kann, sodass ich mir für value das jsp:attribute sparen kann.

Danke für's Mitdenken!
Schöne Grüße,
Robert
 

Zurück
Oben