一尘不染

Struts2将列表数据从JSP发送到Action类:替代方法

jsp

我正在向一位同事解释如何使用说明的索引从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中内置了智能功能,可以将值附加到列表中而不是覆盖它们。

在这种“没有索引”的情况下,谁能详细解释背后的秘密?如何使用上面的片段实例化并填充字符串列表?


阅读 234

收藏
2020-06-10

共1个答案

一尘不染

您应该理解,bean数据而不是bean数据作为参数传递给操作。如果实现,这些参数具有可以找到的结构ParameterAware

请注意,将返回给定名称的所有参数值,因此映射中的对象类型为java.lang.String[]

然后,XWork Type
Conversion会尽最大努力将此映射转换为bean属性。请参阅内置类型转换支持

框架中的常规类型转换是透明的。通常,您要做的就是确保HTML输入具有可在OGNL表达式中使用的名称。(HTML输入是表单元素和其他GET /
POST参数。)

在无索引的情况下,参数被映射在一个键下,而不是在其自己的名称下使用索引名称。

2020-06-10