Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Struts2从jsp文件更新arraylist_Java_Jsp_Struts2 - Fatal编程技术网

Java 如何使用Struts2从jsp文件更新arraylist

Java 如何使用Struts2从jsp文件更新arraylist,java,jsp,struts2,Java,Jsp,Struts2,我正在使用struts2将html表生成到jsp文件中。我想更改此arraylist中包含的值,但行为不是我所期望的 我的流程: java:生成一个arraylist“struct”,其中包含MyLem类型的“n”(例如5)个对象 private ArrayList<MyElem> struct; public void setStruct(...) {...} public ArrayList<MyElem> getStruct() {...} 当然,所有的gette

我正在使用struts2将html表生成到jsp文件中。我想更改此arraylist中包含的值,但行为不是我所期望的

我的流程: java:生成一个arraylist“struct”,其中包含MyLem类型的“n”(例如5)个对象

private ArrayList<MyElem> struct;
public void setStruct(...) {...}
public ArrayList<MyElem> getStruct() {...}
当然,所有的getter和setter都是声明的

test.jsp:

<s:iterator value="struct" status="elemsStatus">
<tr>
<td><s:textfield name="struct.name" value="%{name}" theme="simple"/></td>
    <td><s:textfield name="struct.type" value="%{type}" theme="simple"/></td>
    <td><s:textfield name="struct.length" value="%{length}" theme="simple"/></td>
    <td><s:textfield name="struct.precision" value="%{precision}" theme="simple"/></td>
    <td><s:textfield name="struct.usage" value="%{usage}" theme="simple"/></td>
    <td><s:textfield name="struct.init" value="%{init}" theme="simple"/></td>
    </tr>
</s:iterator>

然后回到Action.java,当我在struct上迭代时,我没有5个对象MyElem,而是30个:一个带有“name”,一个带有“type”,等等,每行都有一个对象。。。 事实上,我希望在html表中按行构造一个对象MyElem


谢谢你

在文本字段标记中尝试以下操作:

<s:textfield name="struct[#elemsStatus.index].yourProperty" value="yourValue" theme="simple" />


您应该将struct作为MyElem的列表获取,并且每个元素都应该具有所有属性name、type、length、precision、usage和init。

设置索引属性的正确语法是

<s:iterator value="struct" status="elemsStatus">
<tr>
<td><s:textfield name="struct[%{#elemsStatus.index}].name" value="%{name}" theme="simple"/></td>
    <td><s:textfield name="struct[%{#elemsStatus.index}].type" value="%{type}" theme="simple"/></td>
    <td><s:textfield name="struct[%{#elemsStatus.index}].length" value="%{length}" theme="simple"/></td>
    <td><s:textfield name="struct[%{#elemsStatus.index}].precision" value="%{precision}" theme="simple"/></td>
    <td><s:textfield name="struct[%{#elemsStatus.index}].usage" value="%{usage}" theme="simple"/></td>
    <td><s:textfield name="struct[%{#elemsStatus.index}].init" value="%{init}" theme="simple"/></td>
    </tr>
</s:iterator>


请提供更多详细信息,struct是Arraylist或bean classstruct是Arraylist,我已经编辑了我的帖子以显示创意而不是name=“struct.length”请按name=“length”尝试如果我这样做,我的“struct”是空的。通过这种方式,如果a想要得到我的值,我必须在Action.java中声明一个“private String length;”,在这个变量中,我将用“,”分隔所有的“length”值,这不是我想要的。这非常有帮助。非常感谢。
<s:iterator value="struct" status="elemsStatus">
<tr>
<td><s:textfield name="struct[%{#elemsStatus.index}].name" value="%{name}" theme="simple"/></td>
    <td><s:textfield name="struct[%{#elemsStatus.index}].type" value="%{type}" theme="simple"/></td>
    <td><s:textfield name="struct[%{#elemsStatus.index}].length" value="%{length}" theme="simple"/></td>
    <td><s:textfield name="struct[%{#elemsStatus.index}].precision" value="%{precision}" theme="simple"/></td>
    <td><s:textfield name="struct[%{#elemsStatus.index}].usage" value="%{usage}" theme="simple"/></td>
    <td><s:textfield name="struct[%{#elemsStatus.index}].init" value="%{init}" theme="simple"/></td>
    </tr>
</s:iterator>