假设我的控制器如下所示:
public class myController {
private MyCustomItem acte;
...
// getter and setter
}
和MyCustomItem
类具有另一个类的Set,例如这样
public class MyCustomItem {
private Set<AnotherClass> signataires;
...
// getter and setter
}
最后,AnotherClass
项目具有一些字符串属性。
我想做的是,从链接到我的控制器的视图中,在我提交表单时设置那些String属性,所以我这样写view.jsp
:
<!-- some html before -->
<s:form namespace="/my/namespace" action="MyController_execute">
<s:iterator value="acte.signataires" status="signaStatus">
<s:hidden name="id" value="%{id}" />
<s:property value="collectivite.nom"/>
<s:textfield name="acte.signataires(%{#signaStatus.index}).commentaire" cssStyle="width:250px;"/>
</s:iterator>
<s:submit/>
</s:form>
如果我尝试从Set <> acte.signataires
中获取一些值,则在我的控制器中提交了表单,它们为null:
for (AnotherClass signataire : acte.getSignataires()) {
System.out.println(signataire.getCommentaire()); // this print NULL
}
对此有任何帮助吗?我的jsp映射不好吗?我还尝试了一种非常简单的语法,例如<s:textfield name="commentaire" cssStyle="width:250px;"/>
,但它也不起作用
您需要将物业标志作为集合吗?我建议您使用ArrayList,以便您可以按索引访问每个元素(signataires [0],signataires [1]等)。然后使用ArrayList可以这样进行:`
<s:form namespace="/my/namespace" action="MyController_execute">
<s:iterator value="acte.signataires" status="signaStatus">
<s:hidden name="id" value="%{id}" />
<s:property value="collectivite.nom"/>
<INPUT type="text" name="acte.signataires[<s:property value="%{#signaStatus.index}"/>].commentaire" cssStyle="width:250px;"/> cssStyle="width:250px;"/>
</s:iterator>
<s:submit/>
</s:form>
`