【发布时间】:2014-10-30 17:41:14
【问题描述】:
我正在向一位同事解释如何使用here 和here 解释的索引从JSP 页面获取列表数据以返回到操作类。他不太明白,自己摸索了一下,直到他突然完全不使用索引就让它工作了!
在他的 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">
在他的动作课上,他有“合适的”二传手:
public List<String> getContactNameList()
public void setContactNameList(List<String> list)
我很困惑为什么会这样。我认为这是可行的,因为他正在发送非 bean 数据(在本例中为字符串),并且 Struts2/OGNL 中内置了一个智能功能,可以将值附加到列表而不是覆盖他们。
任何人都可以详细解释这个“无索引”案例的幕后情况吗?上面的 sn-ps 是如何实例化和填充字符串列表的?
【问题讨论】:
-
那么为什么它不能工作呢?如果您有一个列表,您可以随时调用
add方法向列表中添加一个更多元素,但是如果您需要更改/更新该列表中的特定元素(在某个索引处)怎么办?您将如何引用该元素? -
在action类中,结果是一个字符串列表。我们不需要专门引用任何字符串,只需遍历整个集合即可。无论如何,我很好奇java代码中发生了什么。何时以及如何调用 add 方法? struts2 怎么知道它不应该每次都用新的空列表覆盖列表?使用索引时这很清楚,但没有我看不到它。
-
什么意思?它IS在您每次调用操作时都会重新创建。有无索引都无所谓。
-
远离你的同事。他是 h4x00r,会给你的工作组带来痛苦和诅咒。 :P
标签: java jsp struts2 type-conversion ognl