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

标签 java php jsp spring-tool-suite

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

ProductStore 是一个包含我们拥有的产品的 map 。购物卡商店也一样。 ProductBean是产品的类

产品页面:

     <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>

购物卡页面

                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.
                %>

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

最佳答案

当您执行 setAttribute() 时,其范围仅限于加载主页时的请求,因此在下一页上将不可用,因为它将是一个新请求。

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

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

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

希望对你有帮助

关于java - 如何在两个jsp之间发送数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58606075/

相关文章:

java - Android - 将登录信息发送到 MySQL 数据库

javascript - 如何在 for 循环中调用 custom.js 文件,我想用这个 js 传递一些参数

spring - WEB-INF/folder/.jsp 给出 404

java - Nullable @ManyToOne 不接受 null 值

java - Spring Data Elasticsearch 找不到 geo_point 字段

java - 如何从 Java 中的给定字符串中提取日期

javascript - 如何在javascript变量中获取php数组

php - 在 MySQL 中将大约 100 个值从一个表存档到另一个表的最佳方法?

java - 如何在innerHTML中编写Java代码

java - 如何更新 JSP 中的现有 cookie?