我向同事解释了如何通过使用索引获取列表数据从JSP页面返回到操作类的方式,如here和here所解释的。他自己并不完全理解和摸索,直到他突然通过不使用索引完成工作!Struts2从JSP向Action类发送列表数据:替代方式
他在JSP页面中他有:
<input type="checkbox" name="contactNameList" value="someValue1">
<input type="checkbox" name="contactNameList" value="someValue2">
<input type="checkbox" name="contactNameList" value="someValue3">
<input type="checkbox" name="contactNameList" value="someValue4">
在他的动作类,他有 'appropiate' 制定者:
public List<String> getContactNameList()
public void setContactNameList(List<String> list)
我百思不得其解,为什么这项工作。我认为这有效,因为他发送非bean数据(在这种情况下字符串),并有一个智能构建到Struts2/OGNL追加值列表,而不是覆盖它们。
任何人都可以非常详细地解释这个“无指数”情况下背后隐藏的是什么?字符串列表是如何实例化的并使用上面的代码片段进行填充?
那么为什么它不应该工作?如果你有一个列表,你总是可以调用'add'方法来向列表中添加一个元素,但是如果你需要改变/更新列表中的特定元素(在某个索引处)呢?你将如何引用该元素? – 2014-09-05 18:04:57
在动作类中,结果是一个字符串列表。我们不需要专门引用任何字符串,只是遍历整个集合。无论如何,我很好奇java代码中发生了什么。何时以及如何调用add方法? struts2如何知道它不应该每次都用新的空白列表覆盖列表?当使用索引时,这很清楚,但没有我没有看到它。 – user1884155 2014-09-05 18:21:05
你是什么意思?每次你打电话时都会重新创建**。有索引或没有它并不重要。 – 2014-09-05 18:24:37