我在Spring控制器中使用了org.springframework.beans.factory.BeanCreationException
,因为我使用了ResponseList bean。
Error creating bean with name 'responseList' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: 1 constructor arguments specified but no matching constructor found in bean 'responseList' (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)
以下是上下文部分:
<bean id="response" class="com.form.response.Response" scope="prototype"></bean>
<bean id="myController" class="com.controllers.MyController" scope="prototype">
<property name="response" ref="response"></property>
<property name="responseList" ref="responseList"></property>
</bean>
<bean id="responseList" class="carey.form.response.ResponseList">
<constructor-arg type="java.util.List">
<list>
<ref bean="response"/>
</list>
</constructor-arg>
</bean>
这是Bean:
package com.form.response;
import java.util.List;
public class ResponseList {
public ResponseList() {
// TODO Auto-generated constructor stub
}
private List<Response> responseList;
public List<Response> getResponseList() {
return responseList;
}
public void setResponseList(List<Response> responseList) {
this.responseList = responseList;
}
}
任何人都可以纠正我在这里缺少的东西吗?
答案 0 :(得分:1)
使用构造函数注入
<bean id="response" class="com.form.response.Response" scope="prototype"></bean>
<bean id="myController" class="com.controllers.MyController" scope="prototype">
<property name="response" ref="response"></property>
<property name="responseList" ref="responseList"></property>
</bean>
<bean id="responseList" class="carey.form.response.ResponseList">
<constructor-arg type="java.util.List">
<list>
<ref bean="response"/>
</list>
</constructor-arg>
</bean>
然后像豆一样
package com.form.response;
import java.util.List;
public class ResponseList {
public ResponseList(List<Response> responseList) {
this.responseList=responseList;
// TODO Auto-generated constructor stub
}
private List<Response> responseList;
public List<Response> getResponseList() {
return responseList;
}
public void setResponseList(List<Response> responseList) {
this.responseList = responseList;
}
}
如果设定者注射
<bean id="response" class="com.form.response.Response" scope="prototype"></bean>
<bean id="myController" class="com.controllers.MyController" scope="prototype">
<property name="response" ref="response"></property>
<property name="responseList" ref="responseList"></property>
</bean>
<bean id="responseList" class="carey.form.response.ResponseList">
<property type="java.util.List">
<list>
<ref bean="response"/>
</list>
</property>
</bean>
然后像豆一样
public class ResponseList {
public ResponseList() {
}
private List<Response> responseList;
public List<Response> getResponseList() {
return responseList;
}
public void setResponseList(List<Response> responseList) {
this.responseList = responseList;
}
}
答案 1 :(得分:1)
例外情况Error creating bean with name 'responseList' defined in ServletContext resource
,
Spring没有在ResponseList bean中获得参数化的构造函数。
<bean id="responseList" class="carey.form.response.ResponseList">
<constructor-arg type="java.util.List">
<list>
<ref bean="response"/>
</list>
</constructor-arg>
</bean>
将 与public ResponseList() {
// TODO Auto-generated constructor stub
}
public ResponseList(List<Response> responseList){
this.responseList = responseList;
}