Есть ли способ внедрить HttpSession с помощью Spring в приложении JSF? - PullRequest
0 голосов
/ 10 октября 2011

У меня есть веб-приложение, написанное на JSF2, которое использует Spring.Мне нужно создать bean-компонент, являющийся оболочкой для HTTP-сессии JSF, и использовать его для внутреннего использования.Мне кажется логичным внедрить объект HttpSession в определение этого компонента и включить его в сеанс.Однако я не смог найти способ определить инъекцию в файле context.xml.Возможно ли это сделать, может ли это иметь неприятные последствия и есть ли лучший способ?Все, что я хочу, это иметь текущую сессию внутри этого компонента.Если есть статический метод для получения сеанса (аналог HttpContext.Current.Session в ASP.NET), он также будет полезен.Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 10 октября 2011

Если вы используете метод обработчика, управляемый Spring, вы можете просто добавить объект HttpSession к сигнатуре метода обработчика, и Spring автоматически внедрит его следующим образом:

@RequestMapping("/myhandler.do")
public String myHandler(HttpSession session) {
    ...foo...
}
1 голос
/ 10 октября 2011

Я не уверен насчет части Spring (я не использую ее, я использую только стандартный API Java EE 6), но вы можете получить HttpSession статически в контексте JSF с помощью ExternalContext#getSession() следующим образом:

HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);

Вы можете сделать это в конструкторе (post) компонента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...