我想在JSP页面用checkboxlist取值传到action里面,
一直是空指针,控制台显示list是[]
Action代码:

private List<AtmSproduct> list;
private long supid;
private AtmSproductService atmSproductService;
private AtmSproduct a;
private List<AtmSupplier> aslist;public String add(){
System.out.println("list:"+list);
if(list!=null&&list.size()!=0){
for(AtmSproduct a:list){
if(a!=null){
AtmSupplier as = new AtmSupplier();
as.setSupid(supid);
a.setAtmSupplier(as);
atmSproductService.add(a);
}
   }
     }
      return "add";
}

JSP页面代码:<s:select list="aslist" name="list.atmSupplier.supid" label="供应商名称" 
    listKey="supid" listValue="sname" style="width=130px"></s:select><s:checkboxlist list="aplist" listKey="pid" listValue="pname" 
    name="list.atmProduct.pid"></s:checkboxlist>一直就是该死的万年空指针,谁知道jsp的页面代码哪边错了怎么解决

解决方案 »

  1.   

    不用整的这么复杂吧!
    把你的list用js拼接成json或xml格式的字符串,把这个字符串塞到一个隐藏域中,提交到action,
    在action中解析一下这个json或xml,万无一失!
    如果页面上一次提交N条数据到后台,我就这么处理,从不考虑用Struts的
    private List list;
    set...
    get...
    这种方式!
    在服务器中运行着,你也会感到很放心,因为解决了该死的万年空指针
      

  2.   

    LZ可以参考一下http://www.blogjava.net/kissyan4916/archive/2009/04/28/267453.html,我就不在这儿陈述了,自己学习收获更大
      

  3.   

    你直接把list改成你需要的,你需要给它加一个name属性。你没有看明白吧?把写死的改成动态的就行了呀
      

  4.   


    进去看了看,后台好像是接收String数组的,但lz要的是泛型List,
    lz可以翻开struts2的源码看看,
    struts2的set...其实就是:request.setAttribute(String key, Object value);
    struts2的get...其实就是:request.getParameter(String param);
    struts2在后台接收数组用的是:request.getParameterValues(String param);
    其实这都是javaee的根本,离开了这些,struts2只是个神马!!
      

  5.   

    问题解决了,前台的checkboxlist的name直接对应后台集合的名字就行了不带任何参数后缀,在这里还是感谢2位热心帮忙