Struts2如何将Set 从视图绑定到控制器

问题描述 投票:0回答:1

假设我的控制器如下所示:

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;"/>,但它也不起作用

java jsp collections binding struts2
1个回答
0
投票

您需要将物业标志作为集合吗?我建议您使用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>

`

© www.soinside.com 2019 - 2024. All rights reserved.