请高人批点,谢谢了,在线等。
jsp原码:主是用name=<%="datains[" + i + "].code" %>传值 的,后台就这个数据来接受集合的。
<%
    ArrayList<DataIn> dataInS = (ArrayList)request.getAttribute("dataInS"); 
    if(dataInS != null && dataInS.size() > 0) {
     Iterator it = dataInS.iterator();
     int i = 0;
     while(it.hasNext()) {
     DataIn dataIn = (DataIn)it.next();
     %> 
<tr height="8"onMouseOver="this.bgColor='#B5DAFF'" onMouseOut="this.bgColor='#ffffff'" style="cursor:hand;">
<td align="center"><%= (i + 1) %></td>
<td><input type="text" value='<%=dataIn.getCode() %>' name=<%="datains[" + i + "].code" %>/></td>
<td><%=dataIn.getName() %> </td>
<td><input type="text" value='' name=<%="datains[" + i + "].quantity"  %>/></td>
<td><input name="submit" type="submit" value="提交" onclick= "datainfindadd.submit()"/></td>
</tr>
<%
i++;
     }
       }
%>

解决方案 »

  1.   

    <%="datains[" + i + "].code" %>你里面的引号是啥道理??  应该直接是<%=datains[i].code %>
      

  2.   

    既然用了Struts  为什么还得这么写?  直接读取ValueStack的值不就好了、。
      

  3.   

    回复2楼和4楼,谢谢1楼
       jsp页面,每次循环输出datains(list集,装有datain对象),
    第一次循环要求表单元素
         datains[i].code 表时集合中的第i个对象,code表属性
         datains[  ].code只是字符,datains对应后台的action中的对象集,用于收集datain对象
         
            于是只能这样写 name=<%="datains[" + i + "].code" %>
      

  4.   

    已经查明原因,
      查明方法和过程:
           把form提交方式改成get,查看提交的字符集,
         发现不能用 name=<%="datains[" + i + "].code" %>这个来命名,  只能用String code = "datains[" + i  + "].code";大家可试试,不过没空搞更多的,继续上路!
    name='<%=code%>'