You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Herbert Poul (JIRA)" <ji...@apache.org> on 2008/07/15 13:49:07 UTC

[jira] Commented: (WW-2622) Struts 2 Portlet plugin does not support setting a different struts.action.extension other than 'action'

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

Herbert Poul commented on WW-2622:
----------------------------------

i am pretty sure this commit (rev 671156) introduced a bug for me when using redirectAction result .. it uses the ActionMapping which was put into the context to retrieve the action extension - the ActionMapping is generated by Jsr168Dispatcher#getActionMapping which calls:

                PortletServletRequest httpRequest = new PortletServletRequest(request, getPortletContext());
                mapping = actionMapper.getMapping(httpRequest, dispatcherUtils.getConfigurationManager());

the PortletServletRequest in turn tries to append the action extension to the action URL .. but it expects it to be injected... so imho .. a container.inject(..) statement is missing:


herbert@herbert:~/devel/java/struts2/struts2-parent/plugins/portlet/src/main/java/org/apache/struts2/portlet/dispatcher$ svn diff
Index: Jsr168Dispatcher.java
===================================================================
--- Jsr168Dispatcher.java       (revision 676851)
+++ Jsr168Dispatcher.java       (working copy)
@@ -495,6 +495,7 @@
                 // on the uri, so we add the default one, which should be ok as the
                 // portlet is a portlet first, a servlet second
                 PortletServletRequest httpRequest = new PortletServletRequest(request, getPortletContext());
+               container.inject(httpRequest);
                 mapping = actionMapper.getMapping(httpRequest, dispatcherUtils.getConfigurationManager());
             }
         }


<- this fixed it for me ..

(i hope you don't mind that i'm adding a comment instead of creating a new issue ?)


> Struts 2 Portlet plugin does not support setting a different struts.action.extension other than 'action'
> --------------------------------------------------------------------------------------------------------
>
>                 Key: WW-2622
>                 URL: https://issues.apache.org/struts/browse/WW-2622
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Plugin - Portlet
>    Affects Versions: 2.0.11.1
>         Environment: Struts 2.0.11.1, Apache Pluto 1.1.4, Tomcat 5.5
>            Reporter: Jay Khimani
>            Priority: Minor
>             Fix For: 2.1.3
>
>
> It seems Struts 2 Portlet does not work if  "struts.action.extension" is set to something different - say "do" - instead of default "action". 
> When provided other action action like "do" getting following exception...
> Unable to locate action mapping for request, probably due to an invalid action path: /edit/index - [unknown location]
> 	at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.getActionMapping(Jsr168Dispatcher.java:473)
> 	at org.apache.struts2.portlet.dispatcher.Jsr168Dispatcher.processAction(Jsr168Dispatcher.java:274)
> 	at org.apache.pluto.core.PortletServlet.dispatch(PortletServlet.java:218)
> 	at org.apache.pluto.core.PortletServlet.doPost(PortletServlet.java:145)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> 	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
> 	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
> 	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
> 	at org.apache.pluto.core.DefaultPortletInvokerService.invoke(DefaultPortletInvokerService.java:167)
> 	at org.apache.pluto.core.DefaultPortletInvokerService.action(DefaultPortletInvokerService.java:85)
> 	at org.apache.pluto.core.PortletContainerImpl.doAction(PortletContainerImpl.java:219)
> 	at org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:112)
> 	at org.apache.pluto.driver.PortalDriverServlet.doPost(PortalDriverServlet.java:158)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
> 	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> 	at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:419)
> 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
> 	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
> 	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
> 	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
> 	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
> 	at java.lang.Thread.run(Thread.java:595)
> When struts.action.extension is reverted back to default i.e. "action", everything works smoothly.
> Sorry if am missing any portlet specific configuration to handle different action extensions.
> Cheers!
> - Jay

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