我如何在两个jsp之间发送数据?

问题描述 投票:0回答:1

我想将产品的标识发送到购物卡页面,然后在购物车页面上显示该产品我同时使用了request.set属性和session.setattribute,但它不起作用。如果我使用session.getattribute或request.getattribute.toString(),页面为白色,则不会显示任何内容。如果我仅使用request.getAttribute(不带toString),则结果中不会显示“ ok”行,这表示购买的商品为空。

ProductStore是包含我们拥有的产品的地图。与shoppingcardStore相同。 ProductBean是产品的类

[products页面:

     <h2><a href="<%= "product-page.jsp?id=" + ptp.getId() %>"><%=ptp.getName()%></a></h2>
      <div class="product-btns">
         <form method="GET" action="<%="WhishList.jsp"%>">
            <button class="main-btn icon-btn" name="id" value="<%=ptp.getId()%>"><i class="fa fa-heart"></i></button>
         </form>    
            <button class="main-btn icon-btn"><i class="fa fa-exchange"></i></button>
        <form action="shoppingcard.jsp" method="get">
          <p> <%= ptp.getId() %> </p>
          <%Object product=ptp;
                   request.setAttribute("purchase", ptp.getId());
          %>
          <input type="submit" value="add to cart">
             <button class="primary-btn add-to-cart"><i class="fa fa-shopping-cart"></i> Add to Cart</button>
        </form>
    </div>

[shoppingcard页面

                ProductStore products = new ProductStore();
                Map<String,ProductBean> prodList = products.getProducts();
                ShoppingcardStore db = new ShoppingcardStore();
                Map<String,ProductBean> list = db.getShoppingcard();
                Object purchased = request.getAttribute("purchase").toString();
                if(purchased!=null){
                    out.println("<h1>Ok</h1>");
                    //ProductBean x = (ProductBean) purchased;
                    String x=(String) purchased;
                    db.Purchase(x);
                    //TODO confirm product has been added to the shoppingcart.
                }%>
                <!-- Product Slick -->
                <div class="col-md-9 col-sm-6 col-xs-6">
                    <div class="row">
                        <div id="product-slick-1" class="product-slick">
                <%  if(list != null){
                    Object[] Shoppingcardlist = list.values().toArray();
                    ProductBean ptp;
                    for(int i = 0; i<Shoppingcardlist.length; i++){
                        ptp = (ProductBean)Shoppingcardlist[i];
                        // TODO display the info of the current wish list.
                %>

当然,这只是我的代码的一部分,如果您需要了解更多内容,请告诉我。

java php jsp spring-tool-suite
1个回答
0
投票
当您执行setAttribute()时,其范围仅限于加载主页时的请求,因此它将是新请求,因此在下一页将不可用。

<%Object product=ptp; request.setAttribute("purchase", ptp.getId()); %>

您可以做的是,在URL参数中以GET或表单(获取/发布)的形式提交此值,以使用request.getParameter()在下一个JSP上获取它。

或者您可以通过session.setAttribute()使用会话范围

希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.