Hi Lukasz,

> Does it mean you have something else on top of the stack than action?
The original action, held in the background process, is at the top of the 
stack. This is the object we want returned when "JSONResult.findRootObject" is 
called. The second object in the stack is the action created by the polling 
request to get a progress update. The change in 6.0.0 to call 
'stack.findValue("#action")' returns the second object in the stack. As the 
polling action is never executed and instead delegated to the background 
progress, there's no data returned by the second action i.e. no progress 
information.

> If this is a ModelDriven it should be fine as well as there is a code to 
> detect that.
I have changed my action to implement ModelDriven to get around the code change 
to JSONResult. If this is now a requirement of using the 
ExecuteAndWaitInterceptor, the documentation may need to be updated - 
https://struts.apache.org/core-developers/execute-and-wait-interceptor 

>> Workaround:
>> Changing the action to implement 'ModelDriven' reinstates the old behaviour 
>> of calling 'stack.peek()' in the JSONResult.findRootObject(...) method.

> Thanks, but what else can it be?
Ideally, the action from the background process would be returned by 
"JSONResult.findRootObject" without the need for the action to implement 
ModelDriven. Could the ExecuteAndWaitInterceptor add the action to the context 
with the key 'action'?  I'm not sure if there would be other implications of 
changing the action in this way.

Thanks,

Kris

Reply via email to