Como passar um mapa <ObjectA, List <ObjectB>> para ação no Struts 2
Eu tenho um objeto de evento, dentro há umMap<ObjectA, List<ObjectB>>
, aObjectA
é o rótulo e olist<ObjectB>
são linhas da tabela. Com o código a seguir, posso exibir as tabelas corretamente, mas quando envio o formulário paraAction
classe, o mapa énull
dentro do evento.
<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, então eu modifiquei o código. exibir a tabela está correta, mas recebi um erro e foi para a entrada Resultado. Se eu remover oplanMap
, a ação vai para o sucesso. Então, pelo menos eu sei que o erro é oplanMap
. O código modificado é:
Event
definição: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;
}
}
aObject_B
definição: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;
}
}
o código JSP é:<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>