Сервлет не передает атрибуты в 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");