有关Java Web 中CheckBox提交的问题

来源:互联网 发布:人人商城2.0 源码下载 编辑:程序博客网 时间:2024/06/01 09:49

           最初的想法: 通过checkbox 将我所做的菜单列表(FoodList)显示出来,然后如果菜单中的一些菜品(Food)被选中的话,就将他们的id值传递过来,

      然后调用servicefindById()方法查找对应的Food对象,再将每个对象添加到List集合中,将List放到session域中传递到支付界面.后来发现id传过来的都是0

     复选框:

                      <input type="checkbox" name="foods" value="${fl.id }"/>

     接收复选框的servlet:

                     String[] orderfoods = request.getParameterValues("foods");

     我猜想可能checkbox没有选中事件,值传不过来?然后找了下面的选中事件:

      <form action="${pageContext.request.contextPath}/FoodServlet?method=orderfood" method="post" >

             <input type="checkbox" name="foods" value="${fl.id }"/>内容1

             <input type="checkbox" name="foods" value="${fl.id }"/>内容2

               ......

              <input type="submit" value="下单" class="check" onsubmit="return checkData();"/>

     </form>

     </script>        
            function checkData()
{
  var foods=document.getElementsByName("foods");
  var flag=false;
  for(var i=0;i<foods.length;i++)
  {
     if(foods[i].checked==true)
     {
       flag=true;
       break;
     }
  }
  return flag;
}
   </script>

  写了上面一堆,结果还是接收不到值,就排除了上一种可能

  我就再往上找源码,发现是dao 中调用sql语句出现了问题,在查询的时候没有查 id 这个字段,加上之后,问题迎刃而解.


  附一条利用标签,EL表达式在jsp计算和的方法

先引入标签库:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

  <c:forEach var="ofl" items="${orderfoodlist}" varStatus="vs">
         <tr>
           <th>${vs.count}</th>
           <td>${ofl.foodName}</td>
           <td>${ofl.price}</td>
           <c:set value="${sum +ofl.price}" var="sum" />   (这就是计算和的核心表达式)
         </tr>
       </c:forEach>

          <tr>
         <th>总金额</th>
           <td colspan="2">${sum}</td>    (通过该语句获取sum的值)
         </tr>