我有春季网络应用程序。我已经定义了控制器bean,它将服务的bean作为属性。服务bean也需要Dao。 Dao经过测试并且工作正常。现在服务问题。实际上我会确定那里的二传手!
那么问题是什么?
Controller Bean:
<bean id="listTypeController" class="me.web.servlet.controller.ListTypeController">
<property name="typeService" ref="typeService" />
</bean>
服务Bean:
<bean id="typeService"class="me.general.service.impl.TypeServiceImpl">
<property name="genericDao" ref="genericDao" />
<property name="typeDao" ref="typeDao" />
</bean>
服务类:
public class TypeServiceImpl implements TypeService {
private TypeDao typeDao;
private GenericDao genericDao;
public TypeDao getTypeDao() {
return typeDao;
}
public GenericDao getGenericDao() {
return genericDao;
}
public void setTypeDao(TypeDao typeDao) {
this.typeDao = typeDao;
}
public void setGenericDao(GenericDao genericDao) {
this.genericDao = genericDao;
}
}
列表控制器:
public class ListTypeController {
public static final String SEARCH_TYPE_FORM_ATTRIBUTE_NAME = "SearchTypeForm";
private TypeService typeService;
@ModelAttributeSEARCH_TYPE_FORM_ATTRIBUTE_NAME)
public SearchTypeForm createForm() {
SearchTypeForm form = new SearchTypeForm();
form.setPageSize(SystemConfiguration.getCurrentConfiguration().getDefaultPageSize());
form.setActive(Boolean.TRUE);
return form;
}
@RequestMapping("/administration/types")
public String listTypes(@ModelAttribute(SEARCH_TYPE_FORM_ATTRIBUTE_NAME) SearchTypeForm form,
Model model) {
Page<Type> all = typeService.findTypes(form);
model.addAttribute("all", all);
return "/master/general/List";
}
public void setTypeServic(TypeService typeService) {
this.typeService = typeService;
}
}
错误:
Invalid property 'typeService' of bean class
[me.web.servlet.controller.ListTypeController]:
Bean property 'typeService' is not writable or has an invalid setter method.
Does the parameter type of the setter match the return type of the getter?
答案 0 :(得分:4)
ListTypeController
没有适当类型的属性来接收typeService
bean,否则该属性的setter格式不正确。请注意,如果您正在进行某些代理并且ListTypeController
将类型指定为TypeServiceImpl
,那么可能是因为您应该通过其接口类型TypeService
来引用该bean。您typeService
的代理人为TypeService
,但不是TypeServiceImpl
。
更新:根据您的新代码:setTypeServic
应为setTypeService
,否则您的媒体资源名称实际为typeServic
。
答案 1 :(得分:1)
在我的情况下,我将我的名字命名为:isMyProperty
和is
前缀导致问题。我必须将名称更改为myProperty
。
答案 2 :(得分:0)
在我的情况下,这是因为我有正确的二传手和吸气剂,但每种都有不同的类型。
我的setter使用String并将其解析为目标枚举类型,我的getter直接返回枚举。
出于某种原因,Spring(v3)感到困惑。