Как получить доступ к сессии из объекта Struts - PullRequest
1 голос
/ 03 апреля 2012

Может быть, это немного нубский вопрос, но могу ли я получить доступ к переменной, хранящейся в сеансе, из объекта формы Struts?

public class MyForm extends ActionForm {...}

Ответы [ 4 ]

4 голосов
/ 03 апреля 2012

Мы разработали и поддержали очень большой проект, используя Struts 1. Я знаю вашу проблему, у нас есть класс ActionContext с ActionContextFilter, фильтр связывает объекты запроса и ответа с текущим потоком, используя ThreadLocal member (и, очевидно, он связывает их в конце процесса).

Теперь мы можем получить доступ к запросу, ответу и ... используя ActionContext.getCurrentContext().getRequest() и ActionContext.getCurrentContext().getResponse().

Я считаю,одна и та же вещь может вам помочь.

В целом идея была из Clinton Begin (автора iBatis) образца PetStore;В этом примере он построил хорошее расширение вокруг Struts 1.Я рекомендую вам рассмотреть всю работу.

1 голос
/ 03 апреля 2012

Вам необходимо установить значение для формы в actionServlet (или) JSP.Я не думаю, что вы можете напрямую получить доступ к запросу здесь (если вы не выполните некоторые настройки).

0 голосов
/ 03 апреля 2012

Не пробовал дома, но вы можете использовать:

private HttpServletRequest request;

public void reset(ActionMapping mapping, HttpServletRequest request) {
    this.request = request;
}

и сохранить запрос в локальном поле для последующего использования, как описано выше.

0 голосов
/ 03 апреля 2012

Вы можете получить атрибут в сеансе, используя HttpServletRequest:

request.getSession(false).getAttribute("yourAttributeName");
...