Атрибуты запроса в jsf / icefaces ведут себя странно (пережить конец запроса) - PullRequest
1 голос
/ 27 апреля 2010

У меня есть следующий код в методе слушателя:

FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("time", new Date());

При нажатии кнопки выполняется следующий код

System.out.println(FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("time"));

Можно было бы исключить, что «время» равно нулю, когда слушатель не был выполнен во время обработки текущего запроса, но: кажется, что объект «время» переживает обработку запроса. Так что, когда "время" было установлено иногда в прошлом, оно остается там ... кто-нибудь может объяснить это? Спасибо.

1 Ответ

0 голосов
/ 27 апреля 2010

Нашел ответ здесь: http://wiki.icefaces.org/display/ICE/Compatibility Области применения

По умолчанию ICEfaces 1.x работал в рамках так называемой расширенной области запроса . В двух словах, расширенная область запроса относится к поведению, при котором новый запрос связан только с изменением представления. Это означает, что запросы Ajax, которые происходят в существующем представлении, не рассматриваются ICEfaces как новые запросы. Запрос не считается новым запросом, если он не приводит к новому представлению, поэтому bean-объекты в области запроса не будут воссозданы до тех пор, пока не будет создано новое представление. Это поведение было настраиваемым, чтобы обеспечить более стандартное определение области запроса, но считалось необходимым в то время, потому что существующие стандартные области (запрос, сеанс, приложение, ни один) не были достаточно детальными.

...