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