Struts: Map mittels c-Taglib ausgeben

chaertl

Grünschnabel
Hallo Zusammen,

da ich noch sehr neu im Thema Struts & Co bin habe ich jetzt mein erstes Problem gefunden bei dem ich nicht weiterkomme.

Ich möchte ein Formular mit beliebig vielen Input-Feldern erstellen. Das ganze mache ich über eine Map, die Member-Variable der Form-Bean ist. Die Ausgabe erfolgt recht einfach über ein Scripplet.

Code:
<html:form action="dynamic">
<%
	for(int i=0;i<10;i++) {
		String name = "value(name"+i+")";
%>
	<html:text property="<%=name %>" />
	<br/>
<%
	}
%>
</html:form>

Würde das ganze aber auch gerne mal über die core-taglib ausgeben lassen. Aber irgendwie bekomme ich die Map nicht zu fassen, d.h. es wird gar nix ausgegeben. Habe schon mal über umwege die Map explizit in der Session abgelegt, sollte doch aber auch ohne das gehen (hoffe ich). Wahrscheinlich spreche ich die Map nur nicht richtig an, ich komm aber nicht auf den Fehler.

Meine Map heist "values" und ich möchte das am liebsten so ausgeben:

Code:
<html:form action="dynamic">
<c:forEach var='values' items='${values}'>
	<input type=text name="${values.key} value="${values.value}>
</c:forEach>
</html:form>

Habe jetzt aber im Internet schon so viele Varianten gesehen und probiert und keine läuft. Und da mir der Kopf mittlerweile sowas von raucht, hoffe ich das ich es einigermaßen verständlich rübergebracht habe.

Wenn mir jemand einen kleinen Tip hätte wäre ich sehr dankbar.

Gruß
Christian
 
Hallo!

also bei mir gehts...
test.jsp ruft index.jsp auf...

test.sjp:
Code:
<% 

java.util.Map map = new java.util.HashMap(){
  {
    put("foo","bar");
    put("tom","jdar");
  }
};

request.setAttribute("map",map);
%>

<jsp:forward page="index.jsp"/>

index.jsp:
Code:
<%@ taglib uri="WEB-INF/tlds/c-rt.tld" prefix="c" %> 
Tach:<br/>
<c:forEach var="entry" items="${map}">
	Name:<c:out value="${entry.key}"/>&nbsp;:=<c:out value="${entry.value}"/><br/>
</c:forEach>

Ausgabe:
Code:
Tach:<br/>

	Name:foo&nbsp;:=bar<br/>

	Name:tom&nbsp;:=jdar<br/>

Gruß Tom
 
Hallo Tom,

danke erstmal für deine Antwort. So funktioniert das ganze auch bei mir.

Die Map wird bei mir in einer Form-Bean Klasse definiert (mit den ganzen Gettern und Settern) und geht dann per ActionForward an die Ausgabe Seite.
Jetzt frag ich mich wie Struts die Map dann in der Session oder in welchem Kontext auch immer ablegt um damit per c-Taglib darauf zuzugreifen.
Über Umwege könnte ich wohl die Map auch über die Action-Klasse in der Session ablegen (hab ich schon mal gemcht, das geht auch), aber ich hoffe das es auch einfacher geht.

Hoffe du kannst mir auch da ein wenig auf die Sprünge helfen.

Gruß
Christian
 

Neue Beiträge

Zurück