代码之家  ›  专栏  ›  技术社区  ›  SCREAM2NIGHT

Servlet未将属性转发给JSP(JSP接收空)

  •  0
  • SCREAM2NIGHT  · 技术社区  · 7 年前

    Servlet

        ArrayList<String[]> itemsInCart = new ArrayList<String[]>();
        String[] test = {"bah","3.50","false"};
        itemsInCart.add(test);
    
        ArrayList<Integer> testALEmpty = new ArrayList<>();
        ArrayList<Integer> testALItems = new ArrayList<>();
        testALItems.add(1);
        testALItems.add(2);
        testALItems.add(3);
    
    
        String testStr = "This is a test string";
    
        request.setAttribute("testALEmpty", testALEmpty);
        request.setAttribute("testALItems", testALItems);
    
        request.setAttribute("testStr", testStr);
    
        request.setAttribute("cartAttribute", itemsInCart);
    
    
        try {
            getServletContext().getRequestDispatcher("/Cart.jsp").forward(request, response);
        } catch (Exception e) {
            e.printStackTrace();
        }
    

    JSP

    if (request.getAttribute("cartAttribute") == null) {
    %>
    <b>No Cart</b>
    <%
    }
    

    当servlet转发到JSP时 无购物车 因为出于某种原因,servlet没有将属性传递给JSP。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Ali Alimohammadi    7 年前

    将请求属性设置为会话属性:

    request.getSession().setAttribute("parameter", "test");
    

    有两种方法可以实现这一点。

    使用JSP表达式,您将使用<%=%&燃气轮机;as(通知编号;末尾)

    <%= parameter %>
    

    第二种也是首选的方法是使用JSP EL语法,并直接使用${}as引用请求属性

    ${parameter}
    

    第一个选项要求您首先将属性拉出其范围。第二个没有。

    String parameter = (String) request.getAttribute("parameter");