4

我有一个带有参数化构造函数的参数化抽象类:

public abstract class BasicEntidadController<T extends Entidad> implements Serializable {

     public BasicEntidadController(EntidadBean<T> entidadSessionBean) {....}
     // other methods
}

和一个扩展它的子类:

@SessionScoped
@Named
public class TiendaController extends BasicEntidadController<Tienda> implements Serializable {...}

并且 WELD 报告一个错误,告诉我“BasicEntidadController”不可代理....

org.jboss.weld.exceptions.UnproxyableResolutionException: WELD-001435 Normal scoped bean class org.wgualla.sandbox.entity.BasicEntidadController is not proxyable because it has no no-args constructor - Managed Bean [class org.wgualla.sandbox.tienda.TiendaController] with qualifiers [@Any @Default @Named].

为什么 WELD 试图创建这个抽象/无 bean 类的代理???

如果我想在 EL 表达式中注入/使用树中的最后一个孩子,我必须在继承树中做所有类吗?

提前致谢。

4

1 回答 1

2

根据定义,Java bean 具有“该类必须具有公共默认构造函数(不带参数)”。

请参阅http://en.wikipedia.org/wiki/JavaBeans#JavaBeans_API

我建议您将构造函数更改为

public BasicEntidadController() {....}
     // other methods

然后添加一个setter方法

setEntidadSessionBean(EntidadBean<T> entidadSessionBean)

甚至更好——阅读依赖注入。然后你可以使用类似的东西

@Autowired
EntidadBean<T> entidadSessionBean;

http://www.vogella.com/articles/SpringDependencyInjection/

希望这可以帮助

于 2013-07-24T08:26:40.173 回答