我正在使用Struts并遇到一些奇怪的行为。虽然它不会产生任何错误或错误,但我认为与您分享它会很有趣。Struts2中的奇怪行为
也许你们其中一个可以解释为什么会发生这种情况。
创建下面的代码一个Struts动作 -
public class MyAction extends ActionSupport {
private Map<String, Map<String, Object>> map = new HashMap<String, Map<String, Object>>();
public String execute() {
System.out.println(map);
return SUCCESS;
}
public Map<String, Map<String, Object>> getMap() {
return map;
}
public void setMap(Map<String, Map<String, Object>> map) {
this.map = map;
}
}
创建关联的映射和需要JSP和执行的操作。 你会看到下面的控制台输出 -
{systemProperties={java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=C:\Program Files\Java\jdk1.6.0_32\jre\bin, java.vm.version=20.7-b02, shared.loader=${catalina.base}/shared/classes ....
因此很明显,Struts是注射系统性能到我的地图。 但它为什么这样做呢?我没有要求它这样做。没有使用特殊的XML配置或注释。 什么部分的Struts(什么拦截器)负责这个?我刚刚发现了一个错误还是这种正常行为?如果这是正常的,为什么Struts开发人员认为将每个Map<String, Map<String, Object>>
注入系统属性都是明智的做法?
在你的spring配置XML中设置了'autowire'参数吗? – plucury
@plucury为什么会有所作为? Spring注入bean依赖关系。它不注入集合。 –
如果设置了方法,Spring会注入任何类型的属性。 – plucury