Issue
I am getting an org.springframework.beans.factory.BeanCreationException
in my spring controller as I use 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)
Here is the context part:
<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>
Here is the 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;
}
}
Can anyone please correct what I am missing here?
Solution
using constructor injection
<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>
then bean like
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;
}
}
and if setter injection
<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>
then bean like
public class ResponseList {
public ResponseList() {
}
private List<Response> responseList;
public List<Response> getResponseList() {
return responseList;
}
public void setResponseList(List<Response> responseList) {
this.responseList = responseList;
}
}
Answered By - Darshan Patel
Answer Checked By - Mildred Charles (JavaFixing Admin)