日期:2014-05-19  浏览次数:20595 次

高手快快来啊!这个怎么解决啊!
先说说 技术是 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怎么接收,怎么处理!


 

------解决方案--------------------
为什么不用struts标签呢?
把你的数据全部放在一个form中,直接提交整个form,然后在后台遍历pageList就可以了
------解决方案--------------------
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 解析转换成对应的实体,之后你可以根据需要进行相应的操作
------解决方案--------------------
如果是给结果集排序。用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样式,就能够自动显示每行的序号了。并且顺序不会因为你的行改变位置 而改变
你自己再修改一下吧。
------解决方案--------------------
将当前顺序传递给后台,
在每一个tr里面再添加一个<input type="hidden" name="nname" value="${obj.nname}" />

然后后台用数据接收
如果用Struts 就在Action里面定义 String nname[] ; 就能够接收到传递过来的所有nname了。并且顺序就是你在页面的顺序
------解决方案--------------------
前台jsp有同样的name属性
<input name="txt" id="txt1"/>
<input name="txt" id="txt2"/>
后台java
request.getParameterValues(txt)

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