ServletActionContext.getRequest () возвращает NULL - PullRequest
1 голос
/ 07 февраля 2011

Я работаю в смешанной ситуации, когда использую Servlets & Struts2.

Я звоню HTTPServlet и обрабатываю данные.

Затем мне нужно сделать вызовAPI Struts для вставки данных в БД.

В этом я также использую HTTPSession.

Поэтому я звоню

ServletActionContext.getRequest()

Чтобы получить HttpRequest и затем сеанс вКласс действия Struts.

Класс действия Struts вызывается сервлетом.

Но

ServletActionContext.getRequest()

всегда возвращает NULL.

Это потому, что онне вызывается через Интернет.

1 Ответ

5 голосов
/ 07 февраля 2011

Во-первых, ServletActionContext и ActionContext оба используют ThreadLocal для хранения объектов для каждого запроса (таких как запрос и ответ).Это обрабатывается Struts2.Если вы попытаетесь вызвать их из сервлета, они вернут null, поскольку запрос был перенаправлен на ваш сервлет, а не на Struts2 (и, следовательно, Struts2 не создал контекст действия для запроса).

* 1006С учетом вышесказанного Struts2 является абстракцией более высокого уровня по сравнению с Servlet API.Тот факт, что вы вызываете действие Struts2 из сервлета, звучит действительно неправильно.

Если вам нужно выполнить какой-то общий процесс как в сервлете, так и в действии, то создайте отдельный классчтобы обработать процесс (т.е. вставить данные в базу данных), а затем вызвать этот класс как из вашего сервлета, так и из вашего действия.

Если это не то, что вы пытаетесь сделать, то, пожалуйста, предоставьте более подробную информациювместе с примером вашего сервлета и кода действия.

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