GlassFish 3.1.2 のジェネリックと CDI/WELD に問題があります。私はこれらのクラスを持っています:
これは、JPA エンティティへの参照を保持する抽象 Bean です。
public abstract class AbstractViewBean<T extends Serializable> implements ISelectableBean {
...
private T viewObject;
...
}
次に、TableLazyDataModel を挿入する JSF Bean/ページの抽象クラスがあります。
public abstract class AbstractListPageAction<T extends AbstractViewBean<K>, K extends
Serializable> {
...
@Inject
private TableLazyDataModel<T, K> dataModel;
...
}
TableLazyDataModel:
public class TableLazyDataModel<T extends AbstractViewBean<K>, K extends Serializable>
extends LazyDataModel<T> {
...
}
アプリケーションをデプロイしたい場合は、次のようになります。
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [TableLazyDataModel<UserViewBean, CcalPracovnik>] with qualifiers [@Default] at injection point [[field] @Inject private cz.wf.ui.component.page.AbstractListPageAction.dataModel]
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:311)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:280)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:143)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:163)
at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:382)
at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:367)
at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:379)
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:199)
AbstractViewBean および他のクラスからextends Serializableを削除すると:
public abstract class AbstractViewBean<T> implements ISelectableBean {
...
private T viewObject;
...
}
public abstract class AbstractListPageAction<T extends AbstractViewBean<K>, K> {
...
@Inject
private TableLazyDataModel<T, K> dataModel;
...
}
すべてが正常に動作します。しかし、なぜ?
ありがとう。
編集:
weld-osgi-bundle.jar の WELD バージョンを 1.1.11 に更新しましたが、効果がありません。