Hi,

I am attempting to configure a Result implementation using the @Result
class annotation. As part of this configuration I am sending in a
parameters list which contains a single property. Here is my annotation
and simple class file:

@Result(name = "success", value = "", type = JSONResult.class, params =
{"enableSMD", "true"})
public class DealJsonAction extends ActionSupport {
         
        @SMDMethod
        public String getName(String client) {
        return "testName";
        }
}

My problem is that the'enableSMD' property is not being set to true on
the JSONResult.

I have discovered this is happening because the ResultConfig object that
is passed to ObjectFactory.buildResult() has a 'location' parameter in
it. I am not sure where/why this location parameter is being stuck into
the ResultConfig. Further, the buildResult() method calls
OgnlUtil.setProperties and sets the 'throwPropertyExceptions' parameter
to true. This is problematic.

The JSONResult does not posses a field named 'location'. Therefore, the
call to OgnlUtil.setProperties is throwing an exception when it attempts
to set the location property. This exception causes the iteration over
properties to stop (lines 71-77), and as a result the 'enableSMD'
property is never set on the JSONResult.

There is a large comment in ObjectFactory, lines 227 - 232, that
comments on catching OGNL exceptions and logging them. The comment
implies there is no issue catching these thrown exceptions and the code
should be rethought in the future. 

In my case, however, the throwing of exceptions is subverting setting
valid properties on the target object.

I am relatively new to Struts 2, so perhaps I am simply overlooking a
simple configuration step that might remove the 'location' parameter
from the ResultConfig parameters map. Otherwise, it seems the handling
of OGNL property setting needs some attention?

Any help would be greatly appreciated.

Thanks,
Aaron Brown

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to