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

Musachy Barroso commented on WW-3192:
-------------------------------------

I was unable to reproduce this, this is what I tried, I modified the blank 
application so I have this 2 actions:

        <action name="HelloWorld" class="example.HelloWorld">
            <result type="httpheader">
                <param name="error">404</param>
            </result>
        </action>

        <action name="Login_*" method="{1}" class="example.Login">
            <result name="input">/example/Login.jsp</result>
            <result type="redirectAction">Menu</result>
        </action>

in web.xml, I have:

 <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>ERROR</dispatcher>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

    <error-page>
        <error-code>404</error-code>
        <location>/example/Login_input.action</location>
    </error-page>

When I go to: http://localhost:8080/struts2-blank/example/HelloWorld.action , I 
see the Login page. Do you have "  <dispatcher>ERROR</dispatcher>" in the 
mapping for the filter? Otherwise Struts will not see the request to your error 
page made by the container.

> When struts is used to render an error-page, getting the action mapping from 
> original request
> ---------------------------------------------------------------------------------------------
>
>                 Key: WW-3192
>                 URL: https://issues.apache.org/struts/browse/WW-3192
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Dispatch Filter
>    Affects Versions: 2.1.6
>         Environment: Tomcat 
>            Reporter: Jasper Rosenberg
>            Priority: Critical
>             Fix For: 2.1.8
>
>
> We have mapped 404 in the web.xml to a struts action, e.g.:
>   <error-page>
>     <error-code>404</error-code>
>     <location>/404.action</location>
>   </error-page> 
> Sometimes we have an action return a result type to generate a 404 error. 
> This used to work.  However, now it is failing because 
> PrepareOperations.findActionMapping() is finding the original mapping still 
> in the request when the servlet container invokes the 404.action (and so not 
> getting the struts mapping for the 404 action).   I assume this is also a bug 
> for actions that return a 500 error where the 500 error page is rendered in 
> struts though I haven't tested it yet.
> One fix would be to call request.removeAttribute(STRUTS_ACTION_MAPPING_KEY) 
> at the end of  PrepareOperations.cleanupRequest() though perhaps there are 
> implications to that I'm unaware of.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to