求教:取得表单内容为 空字符串 的原因
问题:取得表单内容为 空字符串 的原因
详细描述:
1、在viewcart.jsp页面提交的表单内容在updatecaert.jsp页面内接收的到,但是取得却是空字符串(而不是null)。
2、页面组成结构:viewcart.jsp页面中装载了updatecaert.jsp页面。viewcart.jsp用来展示购物车;
updatecaert.jsp从viewcart.jsp获取数量来更新购物车信息,完成业务逻辑。
3、问题出在,在viewcart.jsp更新数量后,
在updatecaert.jsp取得的数量为空字符串,十分的不解。
页面大致代码如下
viewcart.jsp购物车展示页面:
- HTML code
<jsp:include page="updatecart.jsp" flush="false"/><jsp:include page="delitemfromcart.jsp" flush="false"/><form name="viewform" action="viewcart.jsp" method="post"> <table width="100%" border="0" align="CENTER" cellpadding="2" cellspacing="1" bgcolor="#c0c0c0"> <tr bgcolor="#dadada"> <td height="22" width="36"> <div align="CENTER"> <font color="#000000">编号</font> </div> </td> <td width="100" height="22"> <div align="CENTER"> <font color="#000000">菜名</font> </div> </td> <td height="22" width="36"> <div align="CENTER"> <font color="#000000">单价</font> </div> </td> <td height="22" width="36"> <div align="CENTER"> <font color="#000000">数量</font> </div> </td> <td width="36" height="22"> <div align="CENTER"> <font color="#000000">金额</font> </div> </td> <td width="36" height="22"> <div align="CENTER"> <font color="#000000">操作</font> </div> </td> </tr><c:set var="cart" value="${sessionScope.CART}" scope="session"/><c:if test="${cart!=null}"><c:set var="totalprice" value="${0.0+0.0}"/> <c:forEach var="entry" items="${cart}"> <c:set var="item" value="${entry.value}"/> <c:set var="totalprice" value="${totalprice+item.totalprice}"/> <c:set var="dish" value="${item.dish}"/> <tr bgcolor="#ffffff"> <td width="36" align="center" height="22"> <font color="#000000">${dish.dishid}</font> </td> <td width="100" height="22"> <font color="#000000">${dish.dishname}</font> </td> <td width="36" align="center" height="22"> <font color="#000000">${dish.nowprice}</font> </td> <td width="36" class="hh" align="center" height="22"> <input type="text" name="dishid_${dish.dishid}" value="${item.quantity}" /> </td> <td width="36" class="bb" align="center" height="22"> <font color="#000000">${item.totalprice}</font> </td> <td width="36" class="bb" align="center" height="22"> <font color="#000000"><a href="viewcart.jsp?delid=${dish.dishid}">删除</a> </font> </td> </tr> </c:forEach> <tr> <td width="36" class="bb" align="center" height="22"> <font color="#000000">总价</font> </td> <td width="36" class="bb" align="center" height="22"> <font color="#000000"><c:out value="${totalprice}"/></font> </td> </tr> </c:if> </table> <input type="submit" name="submit" value="保存修改" /> <a href="show.jsp">继续购物</a> <a href="settle?total=${totalprice}">结算</a> </form>
updatecart.jsp更新数量的页面
- HTML code
<% request.setCharacterEncoding("GBK"); String submit = null; submit = request.getParameter("submit"); if (submit != null && submit.equals("保存修改")) { ArrayList<Dish> dishs=(ArrayList<Dish>)session.getAttribute("DISHS"); for (int i = 1; i <= dishs.size(); i++) { String paramName="dishid_"+String.valueOf(i); String sno=request.getParameter(paramName); System.out.println("i="+i+",param="+paramName+",sno="+sno); if (sno != null&& !"".equals(sno)) { int quantity = Integer.parseInt(sno); System.out.println(i+","+quantity); CART.updateItem(i, quantity); } } session.setAttribute("CART", CART); }%>输出结果:
i=1,param=dishid_1,sno=
i=2,param=dishid_2,sno= //前两个,我明明输入了数量,但取出来的却是 空字符串(注意:不是null)
i=3,param=dishid_3,sno=null //疑惑,为什取不到我输入的值呀?
i=4,param=dishid_4,sno=null
i=5,param=dishid_5,sno=null
i=6,param=dishid_6,sno=null
i=7,param=dishid_7,sno=null
i=8,param=dishid_8,sno=null
i=9,param=dishid_9,sno=null
i=10,param=dishid_10,sno=null
[解决办法]
不知到为什么不行,等懂的,像这种处里的一般要放到action里的,比如说servlet,处里完以后在放到界面上,
[解决办法]
有两个地方你修改一下,试试。
1)updatecart.jsp==〉updatecart.inc
2)<jsp:include page="updatecart.jsp" flush="false"/>
==〉
<%@ include file=="updatecart.inc" %>
[解决办法]
把你的页面用浏览器打开后,右键查看源文件看是否存在你要取的ID!