先说说 技术是 jsp+s2sh!
描述:
   就是jsp页面怎么一次性提交遍历出来的 多个对象?!
   jsp:主要部分:
     <c:forEach items="${ page.pageList}" var="obj" varStatus="str">
     <tr id="tr">
        <td style="background:#f1f1f1" id="seqno"><span>${str.index+1}</span></td>  
<td style="background:#f1f1f1" id="name">${obj.nname}</td>
<td style="background:#f1f1f1">
<a  href="javascript:void(0)" id="up" onclick="moveUp(this)">上移</a>
<a  href="javascript:void(0)" onclick="moveDown(this)">下移</a>
<input type="hidden" name="indexNavigation.nid"  id="nid" value="${obj.nid}" /> 
  </td>
</tr>
   </c:forEach>
${str.index+1}是遍历的顺序
${obj.nname}遍历出每个对象的名称
moveUp是把节点上移方法。moveDown把节点下移方法。下面那个隐藏域是 遍历出来的每个对象的id.
上移,下移我都实现了!就差确定存入数据库了页面大概如下:
   排列顺序  导航名称     操作
     1         电影     上移 下移
     2        电视剧    上移 下移
     3         纪实     上移 下移
     4         少儿     上移 下移
                        确认排序
 现在假如把:电视剧和电影交换顺序
 排列顺序是 :
     1         电视剧   上移 下移
     2          电影    上移 下移
     3         纪实     上移 下移
     4         少儿     上移 下移
也就是说 要把 电视剧和电影的排序字段修改了。
这个怎么做!我知道可以根据电影的id对应的顺序 这样update即可
但是,一次性提交怎么提交,后台Action怎么接收,怎么处理!
 

解决方案 »

  1.   

    为什么不用struts标签呢?
    把你的数据全部放在一个form中,直接提交整个form,然后在后台遍历pageList就可以了
      

  2.   

    你的问题到底是 jsp页面怎么一次性提交遍历出来的 多个对象 还是在页面给结果集排序?
      

  3.   

    1.你可以先定一下实体,如:有id,otype,moveType属性 
    2.你可以 为hidden自己增加很多属性如。<input type="hidden" name="indexNavigation.nid" id="nid" value="${obj.nid}" otype="moive" moveType="up" />  等等,之后前台获取所有属性为$("input[otype=moive]")的隐藏域,把id,otype,moveType等封装成JSON格式数据,传到后台
    3.在后台获取参数使用JSONObject。fromObject 解析转换成对应的实体,之后你可以根据需要进行相应的操作
      

  4.   

    如果是给结果集排序。用jquery
    给上移和下移按钮绑定事件
    $(".up").live("click" ,function(){
        var currentTr = $(this).parent("tr"); //找到当前按钮所在的tr
        var upTr = currentTr.prev("tr"); //上一个tr
        upTr.insertAfter(currentTr); // 把上一个tr插入到当前tr后面,交换位置
    });
    $(".down").live("click" ,function(){
        var currentTr = $(this).parent("tr"); //找到当前按钮所在的tr
        var downTr = currentTr.next("tr"); //下一个tr
        currentTr.insertAfter(downTr); // 把当前tr插入到下一个tr后面,交换位置
    });大概就是这样子做 。还要考虑点击上移按钮 ,并且上面没有元素了怎么办? 点击下移按钮 并且下面没有元素了怎么办?
    要让每一行记录前面都显示排序的序号,最好不要用后台传过来的seqno , 而是给每一条记录用ol li标签 ,设置一下list-style样式,就能够自动显示每行的序号了。并且顺序不会因为你的行改变位置 而改变
    你自己再修改一下吧。
      

  5.   

    将当前顺序传递给后台,
    在每一个tr里面再添加一个<input type="hidden" name="nname" value="${obj.nname}" />然后后台用数据接收
    如果用Struts 就在Action里面定义 String nname[] ; 就能够接收到传递过来的所有nname了。并且顺序就是你在页面的顺序
      

  6.   

    前台jsp有同样的name属性
    <input name="txt" id="txt1"/>
    <input name="txt" id="txt2"/>
    后台java
    request.getParameterValues(txt)
      

  7.   

    你的问题到底是 jsp页面怎么一次性提交遍历出来的 多个对象 还是在页面给结果集排序?问题是:jsp页面怎么一次性提交遍历出来的 多个对象
      

  8.   

    楼主你把问题复杂化了吧,用request.getParameterValues("namg")就可以取出页面对应的name="name"所有的数据呀。
      

  9.   

    用相同的name_index名称(即name+jsp循环索引),提交后会看到
      

  10.   

    看来用的就是纯div了,我说一个建议哈。
    你单独写一个form,你在提交的时候,在页面上通过document获取到你进经过上移,下移后的对象的ID
    这时候你将这些ID加到一个隐藏域中,用json格式啦,字符串用逗号隔开啦随便啦,在action中获取到你
    这个隐藏域的值就是你经过上移下移后的集合中对象的ID了