[ 
https://issues.apache.org/jira/browse/WW-5450?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17871498#comment-17871498
 ] 

Rubens Gomes edited comment on WW-5450 at 8/7/24 12:45 AM:
-----------------------------------------------------------

I can try your suggestion of using %\{#attr.device}, but wondering why is that 
going to help?  I ask because resolving the path to JSP is not a problem.  In 
fact, this code using %\{#request.device} works in Struts 6.6.0 as said before. 
 My problem is Tomcat using GET instead of FORWARD to render the JSP file.  Not 
sure why it would work in 6.6.0 and not in 7.0.0?


was (Author: JIRAUSER305904):
I can try your suggestion of using %\{attr.device}, but wondering why is that 
going to help?  I ask because resolving the path to JSP is not a problem.  In 
fact, this code using %\{request.device} works in Struts 6.6.0 as said before.  
My problem is Tomcat using GET instead of FORWARD to render the JSP file.  Not 
sure why it would work in 6.6.0 and not in 7.0.0?

> ServletDispatcherResult Forwarding GET Instead of FORWARD
> ---------------------------------------------------------
>
>                 Key: WW-5450
>                 URL: https://issues.apache.org/jira/browse/WW-5450
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 7.0.0
>            Reporter: Rubens Gomes
>            Priority: Major
>             Fix For: 7.0.0
>
>
> I am running Struts "7.0.0-M9" along with Spring Boot "3.3.2" + Spring 
> Security with embedded tomcat version is "10.1.26"
>  
> Environment:
> Struts 2 "7.0.0-M9"
> Spring Boot "3.3.2"
> Tomcat "10.1.26"
> Java 21
>  
> I have a Struts Action class annotated with :
> {code:java}
> @Result( 
>   name = Action.INPUT,
>   location = "/WEB-INF/content/%{#request.device}/login.jsp",
>   type = "dispatcher"
> ){code}
>  I have noticed that after returning from the Action class 
> (ViewLoginAction.java) the framework is invoking the above JSP using a 
> DispatcherType.GET instead of DisplatcherType.FORWARD.
> StrutsRequestWrapper is missing request attribute 
> "jakarta.servlet.forward.request_uri"
> Then, tomcat "org.apache.catalina.core.ApplicationDispatcher" doForward 
> method fails to find that attribute in the following line:
> {code:java}
> if (hrequest.getAttribute(FORWARD_REQUEST_URI) == null)
> { 
>   ...
>   ...
>   // then tomcat defaults to setting value of various request attributes 
>   ...
>   ...
> }
>  
> {code}
>  
> And after that, tomcat calls "processRequest(request, response, state);" in 
> the same instance "ApplicationDispatcher" and fails to resolve a FORWARD 
> dispatcher type below.
>  
> Instead, it resolves a REQUEST. And when tomcat sees REQUEST dispatcher type 
> it does a GET on the JSP, instead of FORWARD.
>  
> Should StrutsRequestWrapper have request attribute 
> "jakarta.servlet.forward.request_uri"?  If not why tomcat is resolving a GET 
> instead of FORWARD? 
>  
> I do not see this issue with Struts 6.6.0 + Spring 2.7.18 with embedded 
> Tomcat "9.0.83". which is based on javax.servlet instead.
>  
> —
> Rubens Gomes
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to