struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lukasz Lenart (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (WW-4131) RestActionProxyFactory is handling all requests with PrefixBasedActionMapper
Date Wed, 23 Oct 2013 05:29:46 GMT

     [ https://issues.apache.org/jira/browse/WW-4131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Lukasz Lenart updated WW-4131:
------------------------------

    Description: 
Using the following configuration:

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

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:

{code:java}
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);
    }
}
{code}

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.

  was:
Using the following configuration:

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

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:

{code:java}
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);
	}
}
{code}

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.


> 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.12, 2.3.14, 2.3.15
>            Reporter: Felipe Lorenz
>            Priority: Minor
>             Fix For: 2.3.16
>
>
> Using the following configuration:
> {code:xml}
> <constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper"/>
> <constant name="struts.mapper.prefixMapping" value=":rest,/ajax:struts,/login:struts"/>
> {code}
> 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:
> {code:java}
> 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);
>     }
> }
> {code}
> 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 was sent by Atlassian JIRA
(v6.1#6144)

Mime
View raw message