So übergeben Sie eine Map <ObjectA, List <ObjectB >> an die Aktion in Struts 2
Ich habe ein Ereignisobjekt, in dem sich ein befindetMap<ObjectA, List<ObjectB>>
, dasObjectA
ist das Etikett und daslist<ObjectB>
sind Tabellenzeilen. Mit folgendem Code kann ich die Tabellen korrekt anzeigen, aber wenn ich das Formular abschickeAction
klasse ist die kartenull
innerhalb der Veranstaltung.
<s:iterator value="event.planMap" var="map" >
<h4>Plan Type: <s:property value='key' /></h4>
<table id="plan">
<s:iterator value="value" status="stat" var="detail" >
<tr>
<td><input type="text" id="name" name="event.planMap['%{#map.key}'][%{#stat.index}].name" value="<s:property value='name'/>"/></td>
<td><input type="text" id="text" name="event.planMap['%{#map.key}'][%{#stat.index}].text" value="<s:property value='text'/>"/></td>
<td><input type="text" id="contact" name="event.planMap['%{#map.key}'][%{#stat.index}].contact" value="<s:property value='contact'/>"/></td>
</tr>
</s:iterator>
</table>
</s:iterator>
@ Andrea & Roman, also habe ich den Code geändert. Die Anzeige der Tabelle ist korrekt, aber ich habe eine Fehlermeldung erhalten und bin zur Ergebniseingabe übergegangen. Wenn ich das entferneplanMap
geht die Aktion zum Erfolg. Also zumindest weiß ich, dass der Fehler der istplanMap
. Der geänderte Code lautet:
Event
Definition:public Event {
private Map<Object_A, Object_B> planMap;
public Map<Object_A, Object_B> getPlanMap {
return this.planMap;
}
public void setPlanMap(Map<Object_A, Object_B> planMap) {
this.planMap = planMap;
}
}
dasObject_B
Definition:public Object_B {
private List<Object_C> details;
public List<Object_C> getDetials() {
return this.details;
}
public void setDetails(List<Object_C> details) {
this.details = details;
}
}
Der JSP-Code lautet:<s:iterator value="event.planMap" status="mStat" >
<h4>Plan Type: <s:property value='key' /></h4>
<table id="plan">
<s:iterator value="value.details" status="stat">
<tr>
<td><input type="text" id="name" name="event.planMap['% {#mStat.index}'].details[%{#stat.index}].name" value="<s:property value='name'/>"/></td>
<td><input type="text" id="text" name="event.planMap['%{#mStat.index}'].details[%{#stat.index}].text" value="<s:property value='text'/>"/></td>
<td><input type="text" id="contact" name="event.planMap['%{#mStat.index}'].details[%{#stat.index}].contact" value="<s:property value='contact'/>"/></td>
</tr>
</s:iterator>
</table>
</s:iterator>