Во-первых, ServletActionContext
и ActionContext
оба используют ThreadLocal
для хранения объектов для каждого запроса (таких как запрос и ответ).Это обрабатывается Struts2.Если вы попытаетесь вызвать их из сервлета, они вернут null
, поскольку запрос был перенаправлен на ваш сервлет, а не на Struts2 (и, следовательно, Struts2 не создал контекст действия для запроса).
* 1006С учетом вышесказанного Struts2 является абстракцией более высокого уровня по сравнению с Servlet API.Тот факт, что вы вызываете действие Struts2 из сервлета, звучит
действительно неправильно.
Если вам нужно выполнить какой-то общий процесс как в сервлете, так и в действии, то создайте отдельный классчтобы обработать процесс (т.е. вставить данные в базу данных), а затем вызвать этот класс как из вашего сервлета, так и из вашего действия.
Если это не то, что вы пытаетесь сделать, то, пожалуйста, предоставьте более подробную информациювместе с примером вашего сервлета и кода действия.