【问题标题】:JSTL foreach hidden input submits a null valueJSTL foreach 隐藏输入提交空值
【发布时间】:2013-06-12 07:34:26
【问题描述】:

我在做一个类似于网店的小型JEE5应用,需要展示店铺产品,代码中可以看得更清楚:

<c:forEach var="product" items="${productsBean.products}">
  <div class ="product">
   <table>
    <td>
     <c:out value="${product.id}"/>
    </td>
    <td>
     <c:out value="${product.name}"/>
    </td>
    <td>
     <c:out value="${product.price}"/>
    </td>
    <td>
     <c:out value="${product.description}"/> 
    </td>
    <td>
    <form method="post" action="/servlets-war/AddToCart">
     <input type="hidden" name="id" value="${product.id}"></input>
     <input type="submit" value="add to cart"/>    
    </form>
   </td>
  </table>
 </div>
</c:forEach>

问题是表单中隐藏的输入值在提交表单时返回null而不是${product.id}。

相关的servlet代码如下:

protected void processRequest(HttpServletRequest request,
        HttpServletResponse response)
        throws ServletException, IOException {

    ShoppingCart shoppingCart = (ShoppingCart)request.getSession()
            .getAttribute("shoppingCart");

    if(shoppingCart == null){
    shoppingCart = new ShoppingCart();
    }

    ProductsBean store =(ProductsBean) request
            .getSession().getAttribute("productsBean");

    int id = Integer.parseInt((String)request.getAttribute("id"));

    Product temp = store.getProduct(id);

    shoppingCart.getProducts().add(temp);

    request.getSession().setAttribute("shoppingCart", shoppingCart);

    this.getServletContext().getRequestDispatcher("/shop.jsp")
            .forward(request, response);
}

【问题讨论】:

  • HTML表单中的值设置是否正确(查看页面来源)?

标签: java forms servlets foreach el


【解决方案1】:

您正在检索 id 作为请求属性。

int id = Integer.parseInt((String)request.getAttribute("id"));

表单输入作为请求参数发送到 servlet。适当更改您的代码:

int id = Integer.parseInt((String)request.getParameter("id"));

【讨论】:

  • 谢谢你,你是对的,现在应用程序可以正常工作了。
猜你喜欢
  • 2018-01-28
  • 2019-05-11
  • 2019-07-29
  • 2018-03-13
  • 1970-01-01
  • 2013-01-09
  • 2022-09-30
  • 1970-01-01
  • 2016-05-01
相关资源
最近更新 更多