It looks like the servleturlrenderer had a change in business logic, with the
introduction of ActionInvocation.getProxy()

Adding in a line like 

final String method = urlComponent.getMethod() != null ?
urlComponent.getMethod() : ai.getProxy().getMethod();

And using the method name in the call to determineActionURL(..., method, ...)

Functionally works, but has a new side effect.

/context/ -> /context/!execute
/context/action -> /context/action!execute

In the past, if the method was not specified, it would still not be specified.

So my question is there a better (or more prefered way) to track if the method
was specified at runtime or was defaulted due to configuration?

Looking in DefaultActionProxy.prepare() it calls resolveMethod()

    private void resolveMethod() {
        // if the method is set to null, use the one from the configuration
        // if the one from the configuration is also null, use "execute"
        if (StringUtils.isEmpty(this.method)) {
            this.method = config.getMethodName();
            if (StringUtils.isEmpty(this.method)) {
                this.method = "execute";
            }
////// added ///////////////////////////////////////////////////
            this.methodSpecified=false;
////////////////////////////////////////////////////////////////
        }
    }


ActionProxy.isMethodSpecified()




This would allow a line like:

final String method = urlComponent.getMethod() != null ||
!ai.getProxy().isMethodSpecified() ? urlComponent.getMethod() :
ai.getProxy().getMethod();


The alternative to modifying xwork would be to trap the before and after inside
of the StrutsActionProxy.prepare() and do a check to see if ai.getProxy()
instanceof StrutsActionProxy

Ex:

final String method = urlComponent.getMethod() != null || (ai.getProxy()
instanceof StrutsActionProxy &&
!(StrutsActionProxy(ai.getProxy())).isMethodSpecified() ?
urlComponent.getMethod() : ai.getProxy().getMethod();

Ug.


--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-                                                               -
- Jason Pyeron                      PD Inc. http://www.pdinc.us -
- Principal Consultant              10 West 24th Street #100    -
- +1 (443) 269-1555 x333            Baltimore, Maryland 21218   -
-                                                               -
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
This message is copyright PD Inc, subject to license 20080407P00.



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

Reply via email to