gpt4 book ai didi

java - Struts2如何将Set从 View 绑定(bind)回 Controller
转载 作者:行者123 更新时间:2023-12-02 00:14:06 26 4
gpt4 key购买 nike

假设我的 Controller 如下所示:

public class myController {

private MyCustomItem acte;

...
// getter and setter
}

MyCustomItem类有一组另一个类,就像这样

public class MyCustomItem {

private Set<AnotherClass> signataires;

...
// getter and setter
}

最后,AnotherClass项目有一些字符串属性。

我想要做的是,从链接到我的 Controller 的 View 中,在提交表单时设置这些字符串属性,所以我写了我的 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 中获取一些值,则在我的 Controller 中,它们为空:

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;"/>
</s:iterator>
<s:submit/>
</s:form>

关于java - Struts2如何将Set<Object>从 View 绑定(bind)回 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58098207/

26 4 0