У меня есть страница jsp с некоторой табличной информацией, которая отображается на основе определенных параметров URL (например, ?page=4&sortby=1&rowsperpage=10
). На странице есть кнопка, которая вызывает сервлет, который выполняет определенное действие с БД и перенаправляет обратно на jsp.
Теперь, после этого перенаправления я хотел бы вернуться к тому же представлению, то есть сохранить все параметры. Я думал, что сделаю это:
- Сохранить строку запроса в качестве атрибута сеанса, используя JSTL:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="queryString" value="${request.getQueryString()}" scope="session"/>
- Получить его обратно в сервлете:
if (req.getSession().getAttribute("queryString") != null) {
queryString = (String) req.getSession().getAttribute("queryString");
}
- Перенаправить на тот же вид:
resp.sendRedirect("/users" + "?" + queryString);
Однако этот подход не работает. Отладка показывает, что атрибут queryString
всегда равен нулю. Действительно, если я добавлю следующую строку в jsp сразу после установки атрибута сессии, на jsp ничего не будет напечатано:
<c:out value="${sessionScope.queryString}"/>
Может кто-нибудь сообщить, что не так с моим подходом / кодом?
UPDATE:
Когда я пытаюсь достичь строки запроса через скриптлеты и подставить этот код для кода в пункте 1 выше, он работает отлично. Я озадачен.
<%
String queryString = request.getQueryString();
request.getSession().setAttribute("queryString", queryString);
%>
Спасибо.