Spring实例化editAction失败:editService属性Setter方法异常求助
Struts + Spring 整合中EditAction实例化失败问题排查
错误核心信息
处理请求时发生异常:无法实例化命名空间'/'中为'formUpdate'定义的Action(editAction)。具体错误为:创建ServletContext资源[/WEB-INF/spring/applicationContext-edit.xml]中定义的'editAction' Bean失败,设置属性值出错;嵌套异常为org.springframework.beans.NotWritablePropertyException:Bean类[org.apache.struts.edit.action.EditAction]的属性'editService'不可写或Setter方法无效,请问Setter方法的参数类型是否与Getter方法的返回类型匹配?
排查与解决步骤
- 检查Setter方法的存在与命名规范:确保
EditAction类中存在public void setEditService(EditService service)方法,方法名严格遵循JavaBean规范——属性名editService转成Setter方法时,首字母大写,前缀加set,不能出现拼写错误(比如写成setEditservice)。 - 校验Getter与Setter的类型一致性:
getEditService()的返回类型必须和setEditService()的参数类型完全一致。比如Getter返回EditService,Setter的参数也必须是EditService,不能用父类或其他子类类型替代。 - 核对Spring配置的注入匹配性:在
applicationContext-edit.xml中,给editAction注入的editServiceBean,其类型必须和EditAction中editService属性的类型完全匹配,不能注入不兼容类型的Bean。 - 检查属性名拼写一致性:配置文件中配置的属性名
editService要和EditAction类中的属性名完全一致,包括大小写,避免出现editservice或EditService这类拼写错误。 - 确认方法与类的访问权限:
EditAction类必须是public修饰,setEditService方法也必须是public权限,Spring无法调用私有或受保护的Setter方法完成属性注入。
内容的提问来源于stack exchange,提问作者danirolan21
相关产品推荐
相关产品推荐

