Hi Lukasz,

I could identify one plugin wich could be creating this behaviour, the rest 
plugin.


Since I have this configuration:
>> <constant name="struts.mapper.class" 
>> value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper"/>
>> <constant name="struts.mapper.prefixMapping" 
>> value=":rest,/ajax:struts,/login:struts"/>


I expect that, when I request the following url 
http://xxxxxxxxxxx.com/ajax/anyThingHere, struts should handle this call. But 
instead, RestActionProxyFactory is handle 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 redirect 
to the rest plugin handler and not to the struts default.

Here is my ActionProxyFactory implementation:

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);
        }
}

By some reason, it fixed the origin behaviour.

I hope it could help you.

Thanks,
Felipe Lorenz

Em 26/06/2013, às 04:45, Lukasz Lenart escreveu:

> As I understand you use <s:action executeResult="false"/> ? Which
> means result named "json" shouldn't be executed, you can even remove
> it.
> 
> 
> Regards
> -- 
> Łukasz
> + 48 606 323 122 http://www.lenart.org.pl/
> 
> 2013/6/22 Felipe Lorenz <felipe.lor...@idealogic.com.br>:
>> Hello Lukasz,
>> 
>> I still facing this behaviour. Even with 2.3.16-SNAPSHOT.
>> 
>> One thing that make me thing, was the flush attribute. When it is true, the 
>> json result (the string) appear in the position where the action tag is in 
>> the jsp. But, when I change it to false, the result appears in the top os my 
>> page.
>> 
>> One workaround that I can use is return a result name that is no defined in 
>> the struts.xml. This workaround throw an exception, since struts could no 
>> find my result name, but my list is populated and no result from this action 
>> tag appear in my page.
>> 
>> I hope this information can help.
>> 
>> Also, I am printing my config:
>> 
>> struts.xml:
>> 
>> <?xml version="1.0" encoding="UTF-8" ?>
>> <!DOCTYPE struts PUBLIC
>>        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
>>        "http://struts.apache.org/dtds/struts-2.3.dtd";>
>> <struts order="10">
>>        <constant name="struts.devMode" value="false" />
>>        <constant name="struts.action.extension" value=",json,xhtml,xml"/>
>> 
>>        <constant name="struts.convention.action.mapAllMatches" value="true" 
>> />
>>        <constant name="struts.convention.default.parent.package" 
>> value="default"/>
>> 
>>        <constant name="struts.custom.i18n.resources" value="global" />
>> 
>>        <constant name="struts.mapper.class" 
>> value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper"/>
>>        <constant name="struts.mapper.prefixMapping" 
>> value=":rest,/ajax:struts,/login:struts"/>
>> 
>>        <package name="default" extends="rest-default">
>> 
>>                <interceptors>
>>                        <interceptor 
>> class="br.com.idealogic.interceptor.LoginInterceptor" name="login"/>
>>                        <interceptor 
>> class="br.com.idealogic.interceptor.PermissaoInterceptor" name="permissao"/>
>>                        <interceptor 
>> class="br.com.idealogic.interceptor.I18nInterceptor" name="idioma"/>
>>                        <interceptor 
>> class="br.com.idealogic.interceptor.JPAInterceptor" name="jpa"/>
>>                        <interceptor-stack name="jpaStack">
>>                                <interceptor-ref name="login"/>
>>                                <interceptor-ref name="permissao"/>
>>                                <interceptor-ref name="idioma"/>
>>                                <interceptor-ref name="jpa"/>
>>                                <interceptor-ref name="restDefaultStack"/>
>>                        </interceptor-stack>
>>                </interceptors>
>>                <default-interceptor-ref name="jpaStack"/>
>> 
>> 
>>                <default-action-ref name="login_sistema"></default-action-ref>
>> 
>>                <global-results>
>>                        <result name="login">/login.jsp</result>
>>                        <result name="forbidden">/forbidden.jsp</result>
>>                </global-results>
>> 
>>        </package>
>> 
>>        <include file="struts-ajax.xml"/>
>>        <include file="struts-login.xml"/>
>>        <include file="struts-filtro.xml"/>
>> </struts>
>> 
>> struts-ajax.xml
>> 
>> <?xml version="1.0" encoding="UTF-8"?>
>> <!DOCTYPE struts PUBLIC
>> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
>> "http://struts.apache.org/dtds/struts-2.0.dtd";>
>> <struts>
>>        <package name="ajax" extends="json-default" namespace="/ajax">
>>                <interceptors>
>>                        <interceptor 
>> class="br.com.idealogic.interceptor.JPAInterceptor" name="jpa"/>
>>                        <interceptor-stack name="jpaJsonStack">
>>                                <interceptor-ref name="jpa"/>
>>                                <interceptor-ref 
>> name="jsonValidationWorkflowStack"/>
>>                        </interceptor-stack>
>>                </interceptors>
>>                <default-interceptor-ref name="jpaJsonStack"/>
>> 
>> 
>>                <action name="loadCidadeByEstado" method="loadCidadeByEstado" 
>> class="br.com.seedingControl.action.CidadeAction">
>>                        <result name="json" type="json">
>>                                <param name="includeProperties">
>>                                        ^cidades\[\d+\]\.idCidade,
>>                                        ^cidades\[\d+\]\.nmCidade
>>                                </param>
>>                        </result>
>>                </action>
>> 
>>        </package>
>> </struts>
>> 
>> Thanks for all your help!
>> 
>> Felipe Lorenz
>> 
>> Em 22/06/2013, às 04:27, Lukasz Lenart escreveu:
>> 
>>> 2013/6/22 Litman, Bruno <blit...@alabamainteractive.org>:
>>>> We are also experiencing issues with tags and theme files, we are 
>>>> upgrading many applications from 2.3.4.1 to 2.3.14.3
>>>> I am not sure if this is related - if not and if I need to start a new 
>>>> discussion please let me know and accept my apology.
>>>> 
>>>> 1/
>>>> 
>>>> We previously always coded forms as :
>>>>       <s:form action="login" namespace="/">....
>>>> Now randomly, this fails to generate the proper action url in the html (it 
>>>> is missing the '.action', which results in a 404 once you post the form)
>>>> 
>>>> The only workaround we have found so far is to add the '.action' suffix to 
>>>> the s:form's action attribute. Before it was always added for us by struts.
>>>> So now we are having success with
>>>>       <s:form action="login.action" namespace="/">...
>>>> 
>>>> Is this expected behavior? Did this change recently? 2.3.4.1 is not so 
>>>> ancient..
>>> 
>>> No, it isn't - mainly a bug - Struts should add suffix for you, you
>>> basically use the same action names as defined in struts.xml. This is
>>> very strange, I have just tested with struts2-blank on Jetty and
>>> suffix was there. Could you share more details about the config?
>>> 
>>>> 2/
>>>> 
>>>> We are trying to replace the "required" attribute in the textfields with 
>>>> "requiredLabel" without success. Was the xhtml theme's ftl file 
>>>> "controlheader_core" updated to reflect the changes in the struts-tags.tld 
>>>> (requiredLabel replaced required)?
>>> 
>>> You are right, it is bug :\ Please fill an issue
>>> 
>>>> Also, it seems applications are randomly serving ftl files from other 
>>>> applications' theme folders with the same name.
>>>> This was demonstrated by modifying something obvious in one application's 
>>>> ftl file (displaying some text next to a text field's label), and the 
>>>> effect can be seen randomly on other applications which shouldn’t even see 
>>>> that application's template folder (the themes are however named the same 
>>>> in both applications)
>>>> I am only able to make the "requiredLabel" attribute work if placed in a 
>>>> <s:param> tag as opposed to being just an attribute of the s:textfield 
>>>> tag, but even so it is still not always using the same ftl files (however 
>>>> always from similarly named themes placed inside each application)
>>>> 
>>>> This is extremely confusing. Is FreeMarker caching files independently of 
>>>> the application? Is the app container interfering with caching? (We are 
>>>> using Resin 4.0.36)
>>> 
>>> Hmmm... very strange behaviour, it will be hard to find the source of
>>> the problem. Maybe it is related to new ContainerHolder and how Resin
>>> is managing threads - but I'm not sure :\
>>> 
>>> 
>>> Regards
>>> --
>>> Łukasz
>>> + 48 606 323 122 http://www.lenart.org.pl/
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>>> For additional commands, e-mail: user-h...@struts.apache.org
>>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
>> For additional commands, e-mail: user-h...@struts.apache.org
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> For additional commands, e-mail: user-h...@struts.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to