日期:2014-05-20  浏览次数:20849 次

Struts数组提交问题
我的代码如下:
    <logic:iterate   name= "list "   id= "vest "   property= "student_score "   indexId= "index ">
    <html:text   name= "list "   property= ' <%= "student_score[ "+index+ "] "%> '     />
    </logic:iterate>
有这种方法可以很好的现实,即数据属性
但是提交的时候出现如下错误

javax.servlet.ServletException:   BeanUtils.populate
                org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
                org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
                org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)
                javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
                javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root   cause  

javax.servlet.ServletException:   BeanUtils.populate

如果界面使用:
  <html:text   name= "list "   value= ' '   property= 'student_score '     maxlength= "8 "   size= "8 "     indexed= "true "/>
这种方法可以提交页面显示的多行数据,
但是我初始化的时候需要放入一些数据,却无法得到,显示为
[Ljava.lang.String;@157b39f
如果加入value= ' '可以显示为空
但是程序给这个数组给值了阿

我的想法是:
从程序里面放入一些值给数组
然后让用户修改这些数组的值,然后提交
之使用标签的方法,不想在jsp里面写其他的不正规做法
有没有高手指点一下,最好由例子,完整的
网上我也找了,那种使用AutoArrayList从新ArrayList写get的方法我也用过
不行


------解决方案--------------------
<logic:iterate> 标签外面肯定要加个form标签的,提交地址就是你的修改action
主要问题就是批量修改,一种就是利用表单数组,你struts配置文件里面formbean定义一个java.lang.String[]数组接受
或者提交之前把所有要修改的记录的各个属性,各自合并成一个字符串,然后到服务端拆解
最后再通过循环更新
记得要把你每条记录的主健传过去,更新或者删除的时候要用,可以在每条记录前加个复选框,值就为ID
------解决方案--------------------
<logic:iterate name= "list " id= "vest " property= "student_score " indexId= "index ">
<html:text name= "list " property= ' <%= "student_score[ "+index+ "] "%> ' />
</logic:iterate>

把 list放到session里吧,在jsp页面从session取,应该可以的