В реализации ViewHandlerWrapper у меня есть следующий код:
public void renderView(FacesContext context, UIViewRoot viewToRender) throws IOException, FacesException {
final String token = UUID.randomUUID().toString();
HttpSession httpSession = (HttpSession) context.getExternalContext().getSession(true);
httpSession.setAttribute("expectedToken", token);
getWrapped().renderView(context, viewToRender);
}
Как видите, я хочу добавить UUID в сеанс. После отладчика я вижу, что атрибут остается в сеансе, пока не завершится весь цикл запрос-ответ контейнера сервлета. Однако при следующем вызове атрибут «Ожидаемый токен» будет нулевым.
Прежде чем перейти к "старой школе" (выбирая HttpSession), я попытался манипулировать объектом значения в сеансе, что дало тот же результат. Изменение было отклонено.
Это не должно работать (в конце концов, ответ не фиксируется при вызове renderView)?