struts2中关于list对象注入的问题

来源:互联网 发布:淘宝店铺怎么制作店招 编辑:程序博客网 时间:2024/06/08 20:01

details.jsp页面上提供如下表单:

<%List<City> cities = new ArrayList<City>();cities.add(new City(1001,"gz"));cities.add(new City(1002,"sz"));cities.add(new City(1003,"wh"));request.setAttribute("cities", cities);%><s:form action="save.action"><s:checkboxlist list="#request.cities" listKey="cityId" listValue="cityName"label="city^^" name="cities"></s:checkboxlist><s:submit type="submit" value="tijiao"></s:submit></s:form>


struts.xml配置文件中配置action:


<action name="save" class="com.atguigu.struts2.valuestack.User"method="save"><result name="success">/details.jsp</result></action>


在User类中定义了setter方法:


public class User {private List<City> cities;//City类已经定义好了,有cityId和cityName两个属性,且有相应的getter和setter方法。...public void setCities(List<City> cities) {this.cities = cities;System.out.println(cities);}...}


  按照struts2的运行流程,勾选中的选项应该可以构成一个list对象,通过setCities方法注入到cities属性中,但是跑起来却发现cities参数为空。
然后查看了一下cities的Class类型,发现是struts2自定义的继承自ArrayList的XWorkList类。只有将setCities方法的参数以及User的cities属性均修改为XWorkList才能完成注入。
    确实挺奇葩的!关键在于从jsp页面提交过来的是一个struts2自定义类型的对象,这就比较麻烦了。所以在开发中尽量简化jsp页面中表单的形式,一方面简洁明了,另一方面也便于struts2注入。


阅读全文
0 0