You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Felipe Lorenz (JIRA)" <ji...@apache.org> on 2013/06/27 22:21:19 UTC

[jira] [Created] (WW-4131) RestActionProxyFactory is handling all requests with PrefixBasedActionMapper

Felipe Lorenz created WW-4131:
---------------------------------

             Summary: RestActionProxyFactory is handling all requests with PrefixBasedActionMapper
                 Key: WW-4131
                 URL: https://issues.apache.org/jira/browse/WW-4131
             Project: Struts 2
          Issue Type: Bug
          Components: Plugin - REST
    Affects Versions: 2.3.15, 2.3.14, 2.3.12
            Reporter: Felipe Lorenz
            Priority: Minor


Using the following configuration:

{noformat}
<constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper"/>
<constant name="struts.mapper.prefixMapping" value=":rest,/ajax:struts,/login:struts"/>
{noformat}

Is expected that when I request the following url http://xxxxxxxx.com/ajax/anyThingHere, struts action proxy should handle this call. But instead, RestActionProxyFactory is handling this call.

But the RestActionProxyFactory class has a if, and every time the namespace attribute is injected with "/ajax" value. So the condition always is redirected to the rest plugin handler and not to the struts default.

Here is my ActionProxyFactory implementation:

{noformat}
public class CustomActionProxyFactory extends RestActionProxyFactory {

	@Override
	public ActionProxy createActionProxy(String namespace, String actionName, String methodName, Map<String, Object> extraContext, boolean executeResult, boolean cleanupContext) {
		RestActionProxyFactory p = new RestActionProxyFactory();
		p.setContainer(container);
		if ("/ajax".equals(namespace)) {
			p.setNamespace("/idealogic");
		}

		return p.createActionProxy(namespace, actionName, methodName, extraContext, executeResult, cleanupContext);
	}
}
{noformat}

By some reason, it fixed the origin behaviour.

The begin of this issue was that <s:action> tag was rendering the action result, even with executeResult = false, which is the default value.

Another observation was that, changing the flush attribute value, the result is rendered in different parts of the html.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira