日期:2014-05-17  浏览次数:20772 次

关于jsp向action的复杂传值
<c:forEach var="list" items="${requestScope.list}">	  
      <td height="114" bordercolor="#FFFFFF"><input name="checkbox"
      type="checkbox" value=${list[1].id} class="checkbox"/></td>
      <td bordercolor="#FFFFFF"><span class="STYLE4">
      <a href="goods.jsp?goodsid=${list[1].id}">${list[1].goodname}</a></span></td>
      <td bordercolor="#FFFFFF"><span class="STYLE4">${list[1].price}</span></td>
      </c:forEach>

我在jsp中用c:forEach对list进行了遍历,现在我想将复选框checked的那列的id传给action,如果是传单个值的,那直接设置好name,在ation里get就行,但是现在是多个,并且要用复选框控制。
我自己的思路是用jquery获的选中的复选框,在将复选框的value存在list中,再用$.ajax进行交互,但是在action中用request.getParamater是不合适的(因为是string类型),不知道用getList()能否取到。总之就是想将复选框选中的这些行的参数传值到action,如果有别的好方法可以直接传值的或者用json对象传值(看了一下,没怎么看懂),也帮忙给个思路,谢谢了

------解决方案--------------------
json格式都是key-value形式的,你说 list是java.util.List类型?不过request.getParameter得到的均是String类型,想要到的自定义的类型,肯定是需要处理的(拦截器)。

模拟了一下ajax提交,data参数就是提交到后台的参数,格式自己构造。仅供参考

                         $.ajax({
                     url: 'xxx.action',
                     type: 'post',
                     data: {
                        parameter: '{"ids" : [{"id":"1"},{"id":"2"},{"id":"3"}]}'                              },
                           dataType: 'text',
                           success: function(data){
                                   
                            }
                   });

提交到后台,需要将json字符串转为Map对象,即parameter的字符串格式转化为map,然后用get("ids")得到ArrayList类型数据,不过里面还是map对象,还需进一步解析处理。