У меня странная проблема. Мои значения сервлета отображаются только тогда, когда isAuthenticated имеет значение true, а не когда оно ложно. Это использует Сиро, если это имеет значение. Я посмотрел на консоль hte браузера, и это не перенаправление или что-то еще, но мои значения отображаются только на JSP, если значение true указано ниже.Атрибуты сервлета недоступны в JSP
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
if(SecurityUtils.getSubject() != null && SecurityUtils.getSubject().isAuthenticated()) {
servletRequest.setAttribute("loginStatus",
"true");
} else {
servletRequest.setAttribute("loginStatus",
"false");
}
servletRequest.setAttribute("testValue", "Test Value");
servletRequest.getRequestDispatcher("/index.jsp").forward(servletRequest, servletResponse);
Вот JSP
<html>
<body>
<p>
This is the index page, authenticated is <b>${loginStatus}</b>
</p>
<p>
The test value is ${testValue}
</p>
<ul>
<li><a href='app-login'>Login Page</a></li>
<li><a href='test'>Test link (protected)</a></li>
<li><a href='logout'>Logout</a></li>
</ul>
</html>
}
Есть идеи?
Это не атрибуты сервлета. Вы устанавливаете атрибуты * request *, и они будут потеряны при следующем запросе. Вы должны установить их в сеансе. – EJP
Почему они работают, только если утверждение if истинно (и есть тот, который даже не внутри блока if? Они выполняются точно так же, и нет перенаправления. Я загружаю страницу в новый браузер и он не работает. Войдите и перезагрузите одну и ту же страницу (без перенаправления), и она работает до тех пор, пока я не выйду из системы. – mikeb