Hi.
I'm using struts 2 & struts-spring plugin.
Both are of version 2.3.15.1.
The problem is that after upgrading spring from 3.0.7 to spring 3.2.3 I
started to get "INPUT" instead of "SUCCESS" result.
After debugging for some time I've figured out, that method
"setFieldErrors(Map<String, List<String>> errorMap)" is called (All my
actions are extending ActionSupport class).
Following argument is passed to method:
- errorMap = {java.util.LinkedHashMap@8375} size = 1
- [0] =
{java.util.LinkedHashMap$Entry@8385}"org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry"
-> size = 0
- key: java.lang.String =
{java.lang.String@8386}"org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry"
- value:
org.springframework.context.annotation.ConfigurationClassParser$ImportStack
=
{org.springframework.context.annotation.ConfigurationClassParser$ImportStack@8387}
size = 0
Don't know why this is happening.
Configurations related to spring plugin:
<constant name="struts.objectFactory.spring.autoWire" value="auto"/>
Same happends when I'm changing it to:
<constant name="struts.objectFactory.spring.autoWire" value="type"/>
Property that got injected wrongly is "fieldErrors" (captain obvious ;) ).
Any ideas guys?
P.S. Currently I added ugly hack that's workarounding my issue:
@Override
public void setFieldErrors(Map<String, List<String>> errorMap) {
if(errorMap.containsKey("org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry")){
errorMap.remove("org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry");
}
super.setFieldErrors(errorMap);
}