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

时间:2014-09-05 17:58:25

标签: java jsp struts2 type-conversion ognl

我向同事解释了如何通过使用索引herehere来获取从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中以将值附加到列表而不是覆盖它们。

任何人都可以详细解释这个“无指数”案件背后的问题吗?如何使用上面的代码段实例化和填充字符串列表?

2 个答案:

答案 0 :(得分:1)

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

  

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

然后,XWork Type Conversion会尽最大努力将此地图转换为bean属性。见Built in Type Conversion Support

  

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

在no索引中,case参数映射在一个键下,而不是索引名称在它们自己的名称下使用。

答案 1 :(得分:-1)

您必须在上面的代码中设置索引值

<input type="checkbox" name="contactNameList[0]" value="someValue1">