struts2.0提交List

List中包含简单类型

如果不使用json提交,提交参数应该是这样的:

xxList[0]=a&&xxList[1]=b&&xxList[2]=c”

这样,当后台action中有 getXxList()setXxList(List<String>) 时,struts2就会自动把xxList组装起来。

如果提交的是xxList[1]=b&&xxList[2]=c呢?

我尝试过一次,这种情况也能够获取xxList,只不过xxList.get(0)==null 而已。

List中包含复杂对象

如果List中的T不是java的基本类型,而是一个自定义的复杂对象呢?

首先,定义一个存放在List中的对象。

public class Father(){
    private String name;
    private int age;
}

其次,提交的参数应该是:

xxList[0].name=a&&xxList[0].age=10&&xxList[1].name=c&&xxList[1].age=23&&xxList[2].name=b&&xxList[2].age=32

然后,问题来了。由于java会擦除泛型的定义,运行中的参数设定拦截器只会把List中的对象默认当做Object来处理。但是Object中显然没有setName和setAge的定义。怎么办呢?

struts2提供了一个配置文件,用它可以告诉参数设定拦截器某个action的某个list中的元素应该是某某类的实例。这个配置文件如下所示。

  • 文件路径:XXXAction.java相同路径下。
  • 文件名:XXXAction-conversion.properties
  • Element_xxList=xxx.Father

当参数拦截器处理XXXAction中的xxList时,就能够按照文件中的配置对list中的元素进行正确的实例化了。

如果使用json提交呢?

参见另一篇博客,struts2的json操作。当然,要把两篇博客的内容关联起来看。

©著作权归作者所有:来自51CTO博客作者winters1224的原创作品,请联系作者获取转载授权,否则将追究法律责任 struts2.0提交List https://blog.51cto.com/winters1224/1217424