问题:取得表单内容为 空字符串 的原因
详细描述:
1、在viewcart.jsp页面提交的表单内容在updatecaert.jsp页面内接收的到,但是取得却是空字符串(而不是null)。
2、页面组成结构:viewcart.jsp页面中装载了updatecaert.jsp页面。viewcart.jsp用来展示购物车;
updatecaert.jsp从viewcart.jsp获取数量来更新购物车信息,完成业务逻辑。
3、问题出在,在viewcart.jsp更新数量后,
在updatecaert.jsp取得的数量为空字符串,十分的不解。页面大致代码如下
viewcart.jsp购物车展示页面:<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更新数量的页面<%
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

解决方案 »

  1.   

    你提交的还是自己的页面,在include的页面是通过request得不到值的。
    <form name="viewform" action="viewcart.jsp" method="post">=》
    <form name="viewform" action="updatecart.jsp" method="post">
      

  2.   

    将提交的action改成updatecart.jsp看看。
      

  3.   

    我是想让用户一直停在viewcart里面,
    可是为什么用myeclipse自带的tomcat时。我记得可以运行呀,还有刚才问的那个问题,也是这样。
    今天把tomcat6集成到myeclipse后,一运行,就头大了。
      

  4.   

    太奇怪了
    竟然不可以呀~
    将提交的action改成updatecart.jsp都不行了,好神奇呀……
      

  5.   

    太奇怪了
    将提交的action改成updatecart.jsp这样都不可以了……
    难道还要改成servlet的方式吗……
      

  6.   

    不知到为什么不行,等懂的,像这种处里的一般要放到action里的,比如说servlet,处里完以后在放到界面上,
      

  7.   

    有两个地方你修改一下,试试。
    1)updatecart.jsp==〉updatecart.inc
    2)<jsp:include page="updatecart.jsp" flush="false"/>
      ==〉
      <%@ include file=="updatecart.inc" %>
      

  8.   

    试了一下,取出来的还是空字符串。
    怎么传个数字这么费事呢。。
    传数字和串字符,处理机制竟然不一样~
    也不知道我哪里给改错了,前些日子在myeclipse自带的tomcat下还能正常运行呢。。
    昨天改到tomcat6(因为要求在tomcat的安装目录下的lib中放置一个jar驱动包,myeclipse自带的tomcat中找不到lib,所以把tomcat6集成到myeclipse后,新问题来了)下后,就出现了这个么问题,难道原版的tomcat6解析要严格吗……
      

  9.   

    是有的,
    你看<input type="text" name="dishid_2" value="2" /><input type="text" name="dishid_4" value="4" />