我现在面临的问题是:入库单上有多条产品要提交到后台例如:
产品名称: <input type="text" name="">  产品型号:<input type="text" name="">
产品名称: <input type="text" name="">  产品型号:<input type="text" name="">
产品名称: <input type="text" name="">  产品型号:<input type="text" name="">
产品名称: <input type="text" name="">  产品型号:<input type="text" name="">我怎么样才能实现批量提交数据,有一种办法是些JSON,这很麻烦,请问各位高手有没有更好的办法???最好用Struts2来解决

解决方案 »

  1.   

    直接用servlet不行吗?
    后台用request.getParameterValues(参数名)来取出来
      

  2.   

    这样太麻烦了,还不如用<input name="XXList[i].name">呢  不过这样有bug
      

  3.   

    我们一般是先用javascript 处理,放到数组集合里,再传到后台
      

  4.   

    应该可以把它放到list里面传到后台吧
      

  5.   

    在struts2中用数组接收,然后循环插入就行了
      

  6.   

    在action中将name设置成一个字符串数组。就能接受对象页面的值。
    然后遍历name数组,执行插入操作。
      

  7.   

    struts2:
    假设产品是product(productname,productid)
    你在model层中多声明几个product
    product1.product2,product3 然后写好set和get方法
    前台这样写:
    产品名称: <input type="text" name="product1.productname"> 产品型号:<input type="text" name="product1.productid">
    产品名称: <input type="text" name="product2.productname"> 产品型号:<input type="text" name="product2.productid">
    产品名称: <input type="text" name="product3.productname"> 产品型号:<input type="text" name="product3.productid">
    产品名称: <input type="text" name="product4.productname"> 产品型号:<input type="text" name="product4.productid">
      

  8.   

      我一般也用数组传到action 在action 中用request.getParameterValues(参数名) 接收,
     
      

  9.   


    再加一点,考虑效率,可能你需要逐笔commit提交
      

  10.   


    这种写法是有bug的,加入我用js将第一条删掉,那么就不会存在  :产品名称: <input type="text" name="product1.productname"> 产品型号:<input type="text" name="product1.productid">
    了,这样product只从2开始插入了,我没有这么试过,不知道会不会报错。
      

  11.   


    这种写法是有bug的,加入我用js将第一条删掉,那么就不会存在 :产品名称: <input type="text" name="product1.productname"> 产品型号:<input type="text" name="product1.productid">
    了,这样product只从2开始插入了,我没有这么试过,不知道会不会报错。
      

  12.   

    这样你一下子就可以提交四个product.可能觉得这种方法很死,但是如果上十条,上百条.那可能就有好处了.
    现在我再说出我的想法,供大家参考.如果上十条,上百条.我就可以先提交四个product.每四个用一个form表单.然后循环把他们提交过去,在这里可能要用ajax了.
      

  13.   


    1.<s:iterator value="careerDtoList" status="stat">   
    2.   <tr>   
    3.     <td>   
    4.  
    5.       <input name="careerList[<s:property value={#stat.index}'/>].personId" type="text" id="projectPerform" size="17" maxlength="30"/></td>   
    6.     <td align="left>   
    7.  
    8.       <input name="careerList[<s:property value='%{#stat.index}'/>].name" type="text" id="partPeriod2" size="4" maxlength="7" ></td>   
    9.  </tr>   
    10.</s:iterator>  
      

  14.   


    lz可知道struts2有个强大的类型转换器converter
    lz只需要将这些值转换成一个list集合即可,用自定义转换器转。写一次,以后用配置下即可
      

  15.   

    用javascript封装好了再传到后台吧。复杂的操作不可能由简单的代码完成。LZ还是迎难而上吧。
      

  16.   

    提交数组是最简单的解决方法了。struts2在action中定义数组,可以直接接收。
      

  17.   

    用数组是有bug的//把一条明细添加到table中
    function addToTable(){ 
     var col="<tr  class=dvtr>"
     +"<td  class=myDvLtd2> <input id='del'  readonly value='"+$('#customer_name').val()+"' type='text' name=''> </td>"
      +"<td  class=myDvLtd2> <input id='del' readonly value='"+$('#chipType').val()+"' type='text' name=''> </td>"
      +"<td  class=myDvLtd2> <input id='del' readonly value='"+$('#planSum').val()+"' type='text' name=''> </td>"
      +"<td  class=myDvLtd2> <input id='del' readonly  value='"+$('#proType').val()+"' type='text' name=''> </td>"
      +"<td  class=myDvLtd2> <input id='del' readonly value='"+$('#descrip').val()+"' type='text' name=''> </td>"
      +"<td > <input value='删除' type='button' onclick='deleteDetail(this)'> <input value='修改' type='button'                       onclick='modify()'></td>"
     +"</tr>";
    $(col).insertBefore($("table tr#end"))
    var s;
    $("#planSum").each(function(){//计算合计计划数量
               s=parseInt($('#sum').val())+parseInt($(this).val());
             }); 
     $('#sum').val(s);
    tableLine();
    win.close();
    }
    如果我吧第一条删除,就没有XXX[1].name了,前台写js封装很麻烦!!!!
      

  18.   

    产品名称: <input type="text" name="productName"> 产品型号:<input type="text" name="productType">
    产品名称: <input type="text" name="productName"> 产品型号:<input type="text" name="productType">
    产品名称: <input type="text" name="productName"> 产品型号:<input type="text" name="productType">
    产品名称: <input type="text" name="productName"> 产品型号:<input type="text" name="productType">后台用 String[] productName= request.getParameterValues("productName");
          String[] productType= request.getParameterValues("productType");然后依次读取数组里的数据就可以了
           我做的功能和你的需求差不多   也是js添加新行或者删除行
    插入多条数据
      

  19.   

    我前天刚碰到过这个问题,我是通过request.getParameterValues()把他们都取到数组里面 在有for循环取值,String id[] =request.getParameterValues("orderDetailId");
    String discount[]=request.getParameterValues("discount");
    String count[]=request.getParameterValues("num");
    String price[]=request.getParameterValues("price");
    String orderid = request.getParameter("orderid");public boolean updateOrder(String[] id, String[] count,String[] discount,String[] price) {
    boolean b = false;
    try {
    jdbc = new JDBConnection();
    connection = jdbc.connection;
    double dis = 0;
    for(int i=0;i<id.length;i++){
     if(discount[i]!=null&&!"".equals(discount[i])){
    dis = (Double.parseDouble(discount[i]))/100;
    }
    String idstr = id[i];
    String countstr=count[i];
    float pricestr=Math.round(Float.parseFloat(price[i])*dis*100)/100f;
    String sql="update tb_orderDetail set number1='"+countstr+"' ,discount='"+dis+"',price='"+pricestr+"' where id='"+idstr+"'";
    ps=connection.prepareStatement(sql);
    ps.executeUpdate();
    b = true;
    }
        ps.close();
    connection.close();
    return b;
    } catch (SQLException ex) {
    b = false;
    ex.printStackTrace();
    return b;
    }
    }希望對你有用,呵呵
      

  20.   

    不论是servlet还是struts的action类,处理一样:String[]paramList = HttpServletRequest.getParameterNames();
    List<String>valueList = new Vector<String>();
    for(String para: paramList){    if(para.eqquals("")){    //专门处理name是你要的产品的那些文本域
          valueList.add(request.getParameter(para);//做好字符集编码处理
        }
    }
      

  21.   

    首先是要不要前台封装,也就是js封成数组。不需要的话,就考虑后台直接获取,getParameterValues()或者Struts2的相关 容器处理。
      

  22.   

    16楼的方法是正确的.  不用些转换器。   struts2默认会转换 map list ....
    <input name="entities[0].name"> 这样写即可. 要做的任意增减的话,肯定要用js控制一下了
    至于<input name="entity.name"><input name="entity.id"> 这这种写法,是错误的。struts2怎么知道该创建一个entity对象呢,还是两个entity对象呢.action用list接收即可
      

  23.   

    用数组传到action 在action 中用request.getParameterValues(参数名) 接收,
      

  24.   

    用struts2,或者用Ajax都比较简单的.
      

  25.   

    String names[]=request.getParameterValues("names");
    String codes[]=request.getParameterValues("codes");
      

  26.   

    struts2 Action裏面用
    String names[]=ServletActionContext.getRequest().getParameterValues("names");
    String codes[]=ServletActionContext.getRequest().getParameterValues("codes");
      

  27.   

    希望高手来帮住我们,有什么在好的方法,把自己所有知道的批量提交数据的方法都写出来吧!!!go!go!go!