You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Ronny Løvtangen (JIRA)" <ji...@apache.org> on 2008/11/14 23:25:37 UTC
[jira] Updated: (WW-2869) Actions invoked with gets
actionErrors copied from main action
[ https://issues.apache.org/struts/browse/WW-2869?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ronny Løvtangen updated WW-2869:
--------------------------------
Component/s: Core Interceptors
> Actions invoked with <s:action..> gets actionErrors copied from main action
> ---------------------------------------------------------------------------
>
> Key: WW-2869
> URL: https://issues.apache.org/struts/browse/WW-2869
> Project: Struts 2
> Issue Type: Bug
> Components: Core Interceptors
> Affects Versions: 2.0.13, 2.1.2
> Reporter: Ronny Løvtangen
>
> If I invoke an action from a JSP with <s:action..>, that action will get actionErrors copied from the first action.
> This is done by ChainingInterceptor, unless the first action implements Unchainable.
> Actions included with <s:action..> should be independent of the page they are included from, this is not the same as using resultType 'chain'.
> Example:
> FooAction:
> public class FooAction extends ActionSupport {
> public String execute() {
> addActionError("an error from FooAction");
> return SUCCESS;
> }
> }
> foo.jsp:
> <s:action name="bar"/>
> BarAction:
> public class BarAction extends ActionSupport{
> }
> struts.xml:
> <action name="foo" class="test.FooAction">
> <result>/jsp/foo.jsp</result>
> </action>
> <action name="bar" class="test.BarAction">
> <result>/jsp/bar.jsp</result>
> </action>
> When going to /foo.action then BarAction is never invoked because:
> 1) FooAction adds actionError
> 2) foo.jsp is displayed
> 3) foo.jsp invokes BarAction with <s:action..> tag
> 4) ChainingInterceptor intercepts BarAction and copies actionErrors from FooAction to BarAction
> 5) DefaultWorkflowInterceptor intercepts BarAction and since BarAction now has actionErrors, it stops the invocation returns "input"
> 6) There is no "input" result defined for BarAction, which leads to Exception
> This is the line in ChainingInterceptor that copies the actionErrors:
> reflectionProvider.copy(o, invocation.getAction(), ctxMap, excludes, includes);
> This shouldn't be done in the case of a <s:action..>, only for resultType 'chain'
> I have verified that this is still an issue in the latest svn version of 2.1.3 (rev 701674).
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.