Сервлет не передает атрибуты в JSP (JSP получает ноль)

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

Когда сервлет пересылается в JSP, у меня нет корзины, потому что по какой-то причине сервлет не передает атрибуты в JSP.

1 ответ

Решение

Установить атрибут запроса в атрибут сеанса:

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

или же

Есть два способа сделать это.

Используя выражение JSP, вы бы использовали <% =%> как (обратите внимание, нет; в конце)

<%= parameter %>

Второй и предпочтительный способ - использовать синтаксис JSP EL и ссылаться на атрибут запроса, используя ${ } как

${parameter}

Первый вариант требует, чтобы вы сначала вытащили атрибут из области видимости. Второй нет.

String parameter = (String) request.getAttribute("parameter");
Другие вопросы по тегам