Johannes Mayer created WW-5534: ---------------------------------- Summary: Actions with Spring's @Transactional and ModelDriven Key: WW-5534 URL: https://issues.apache.org/jira/browse/WW-5534 Project: Struts 2 Issue Type: Bug Components: Core Interceptors, Plugin - Spring Affects Versions: 7.0.0 Reporter: Johannes Mayer
Hi, When using the ModelDriven interface, the getModel method has to be annotated with {_}@StrutsParameter{_}. When Spring decides to wrap an Action object with SpringCGLIB (e.g. when annotating a method with {_}@Transactional){_}, one has to add the Package to the allowList, so execute can be called. No harm done, just add this to the {_}struts.xml{_}: {code:java} <constant name="struts.allowlist.packageNames" value="your.action.package"/> {code} The now emerging problem is now, that _org.apache.struts2.interceptor.parameter.ParametersInterceptor_ is not able to map the request parameter to the model, because it is not able to find a suitable _getModel_ method. As a workaround, I can tell the ParameterInterceptor to not need a _@StrutsParameter_ annotation, but imo that defeats the purpose of this annotation. {code:java} <constant name="struts.parameters.requireAnnotations" value="false" /> {code} Spring's AopUtils gives the option the get to the real class: _AopUtils.getTargetClass(springCGLIBObject);_ I created a project to showcase this: [https://github.com/sf-JMA/struts7-model-driven/|https://github.com/sf-JMA/struts7-model-driven/tree/main/src/main] I added a test ([GitHub|[https://github.com/sf-JMA/struts7-model-driven/blob/main/src/test/java/com/steadforce/aek/struts7modeldriven/SpringAopVersusModelDrivenTest.java])] to showcase the AopUtils method. -- This message was sent by Atlassian Jira (v8.20.10#820010)