2013-04-20 79 views
8

我想從的Servlet的請求轉發到行動這樣使用RequestDispacher這樣如何將請求從servlet轉發到struts2的動作?

RequestDispatcher dispatcher=request.getRequestDispatcher("hello.action"); 
dispatcher.include(request, response); 

它不工作。我該如何解決這個問題?

回答

9

爲了做到這一點,你可能還需要設置過濾器來運行FORWARD(和INCLUDE,因爲你的代碼顯示,儘管你聲明你想要FORWARD):

<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> <!-- If you want includes as well --> 
</filter-mapping> 
+0

優秀.. @戴夫 – 2016-04-25 15:32:12

7

使用在servlet

getServletContext().getRequestDispatcher("/hello.action").forward(request, response); 

代碼,您還配置struts2的濾波器,可以接受請求轉發

<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class> 
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
    </filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
</filter-mapping> 
+0

完美.. @ Roman – 2016-04-25 15:32:22

相關問題