Taglib c:forEach ... Name des Attributes aus Variable lesen - wie?

glhlg

Mitglied
Guten Morgen,

ich habe eine forEach-Schleife, die wie folgt aussieht:
Code:
						<c:forEach items="${allservices[1]}" var="curString">
							<th nowrap="nowrap">${curString}</th>
						</c:forEach>

Das [1] ist, weil ich nur den zweiten Eintrag der Liste auswerten möchte.
Nun lese ich ja das Attribut allservices aus.
Diesen String möchte ich aber nicht hart in das forEach schreiben, sondern aus einer Konstante auslesen, damit ich nicht an mehreren Stellen diese Magic-Strings habe.

Folgendes funktioniert leider nicht: :confused:
Code:
						<c:forEach items="${${Konstanten.ALL_SERVICES}[1]}" var="curString">
							<th nowrap="nowrap">${curString}</th>
						</c:forEach>

Wie kann ich den Attributsnamen auslesen, so dass ich diesen nicht hart in den Taglib-Aufruf schreiben muss?


Vielen Dank schon mal für eure Hilfe!
Gruß
Gerrit
 
Ich habe mir nun erst mal wie folgt geholfen:

Code:
<%
	List<String[]> daten = (List<String[]>) request.getAttribute(WebConstants.ATTR_PLANER_SERVICE_UEBERSICHT_ALLESERVICES);
	String[] types = daten.get(0);
	String[] head = daten.get(1);
	request.setAttribute("LOCAL_ATTR_HEADER", head);
	request.setAttribute("LOCAL_ATTR_TYPES", types);
	request.setAttribute("LOCAL_ATTR_DATEN", daten);
%>

Und kann dann im Taglib auf die Attribute, wie LOCAL_ATTR_HEADER zugreifen.

Schöner wäre es, wenn ich die Konstante WebConstants.ATTR_PLANER_SERVICE_UEBERSICHT_ALLESERVICES verwenden könnte.


Gruß
Gerrit
 
Hi,

und nun hast du Scriptlet-Code und JSTL in deiner JSP, welche damit noch weniger zu warten ist! Was ist denn an deiner ersten Variante so schlecht? Konstanten kannst du in der JSTL nicht verwenden, außer du benutzt die Unstandard-Tag Bibliohek..

Grüße
Peter
 
Hallo,

ich möchte gerne den String , unter dem das Attribut im Request abgelegt ist, nur an einer Stelle pflegen.
Wenn ich nun "allservices" in dem Taglib verwende, dann müsste ich eine Änderung dieses Strings an zwei Stellen durchführen. Hm ...

Gruß
Gerrit
 
Hi,
ich verstehe dich schon, aber du mußt dich an dieser Stelle entscheiden, ob du mit Scriptlet arbeitest, dann kannst du den Requestparameter in einer Konstante ablegen oder du arbeitest mit JSTL, dann mußt du die Parameternamen in den Taglibs als String schreiben. Ich würde grundsätzlich nie mehr mit Scriptlets arbeiten, außerdem kommt es doch so gut wie nie vor, das du deinen Parameternamen änderst. Scriptlets und JSTL zu mischen, ist für jeden Entwickler bzw. Webdesigner, der damit arbeiten soll, eine absolute Zumutung.

Grüße
Peter
 
Da ich dieses Gemixe auch bescheiden finde, habe ich mich für die Scriptlet-freie Variante entschieden.
Danke für deine Hilfe! :)
 

Neue Beiträge

Zurück