我在org.primefaces.model.LazyDataModel
的实现类中注入的任何CDI bean都被证明为null。惰性模型实现类本身是一个CDI@Nated
bean,范围@javax.faces.bean.ViewScoped
。它看起来像这样:
@Named("myLazyModel")
@ViewScoped
Class MyLazyModel extends LazyDataModel implements Serializable {
public MyLazyModel() {
}
@Inject
AnotherCdiBeanClass injectedObj;
public AnotherCdiBeanClass getInjectedObj() {
return injectedObj;
}
public AnotherCdiBeanClass setInjectedObj(AnotherCdiBeanClass anotherCdiBeanClassObj) {
this.injectedObj = anotherCdiBeanClassObj;
}
public void someMethod() {
getInjectedObj(); // Its NULL, why?
}
}
在注入lazymodel实现bean类时,我确实在eclipse中收到了来自Java的警告。警告类似于lazymodel类bean不能被容器代理,因为它不包含非私有的无参数构造函数,并且bean不是普通的作用域bean(类似于此)。
还有一个问题,在LazyDataModel实现类中,我将行数设置为实际数据列表的动态大小(在网格中过滤后的大小)。但在某个CDIBean外部实例化lazymodel实现类后,我得到的行数为零。
新的MyLazyModel(实际催化剂)。getRowCount()
-
调试后,我发现它确实包含完整的实际数据列表,但行数仍然为零。
当我在primefaces网格上输入和过滤时,我需要对过滤的行进行< code>rowCount操作,这样我就可以用当前过滤的网格的rowCount值动态更新outputLabel。
int currentRowCount = actualDataListInLazyModelClass.size();
我将像这样更新outputLabel:
org.primefaces.context.RequestContext.getCurrentInstance.update("myForm:recordCountLabel");
但在此之前,我需要用rowCount值设置注入bean(视图的支持bean)的属性,但注入bean本身变成了null,如前所述。
getInjectedObj().setNoOfRecords(Integer.toString(currentRowCount));
//空指针,因为getInjectedObj()为空
抱歉,如果我描述的东西或多或少由于我的限制。
您有错误的ViewScoped。对于JSF 2.2上的CDI,它应该是javax.faces.view.ViewScoped
,如果您在JSF 2.0/2.1上但正在使用CDI(您“应该”),您可以使用OmniFaces View在
参见也
问题内容: 我的测试课: 我在行上得到一个空指针异常: 在精确的给出空指针异常 如何使Junit类中的beanObject字段自动装配成为可能,以便可以使用“ BeanClass”类中的方法? 从评论中复制: 用简单的术语来说.. beanClass是具有某些方法的接口..我用 注释标记了该beanClass。.banClass 是由具有方法实现的beanClassImpl类实现的。.我需要在我的
我用TestNG类创建了一个Maven项目。在TestNG。xml我已经给出了套件的名称。我使用了多个浏览器Chrome和Firefox来并行运行。仅使用setup类和一个以上的类就可以了,但是当我使用注释包含多个类时,我会得到一个注入错误,并给出一个错误。 我将提供我尝试过的代码 设置。JAVA 我得到的错误如下: 无法使用[class org.openqa.selenium.remote.De
我有一个类BusinessRowMapper,它实现了将PostGres JSONB对象转换为Java对象的RowMapper。 它覆盖mapRow 现在,我如何在这个BusinessRowMapper Bean中进行PersonUtility Bean的Spring管理注入,而不是将实用程序Bean作为构造函数参数传递给BusinessRowMapper?
我已经尝试了几种方法来将依赖项注入我的实现中,但没有任何效果。我已经尝试了几乎所有的stackoverflow线程。我正在使用HiberNate Validator来实现自定义验证。我希望被注入
我有一个有状态的会话作用域(CDI)EJB,它保存有关用户会话的信息。 现在,我想从一个 我从webapp直接访问EJB(使用注入)到我为JSF使用的bean中(它们也是CDI管理的bean)。 我面临的问题是,似乎与JSF bean处于不同的“会话范围”。创建了两个实例;一个从JSF实例化,另一个从HttpSessionListener实例化。 我尝试通过注入实例注入bean 这个bug报告建议
我上了如下的课,效果很好 现在,我没有直接使用EmpService,而是创建了一个接口,EmpService实现了该接口,如下所示。 所以现在我的资源类必须使用接口,但我不确定如何引用它必须使用的实现。 我看到了这个,我不确定我的绑定应该去哪里。(这是我第一个与Guice相关的项目,所以我是一个完全的新手)。 这就是“未绑定com.api.EmpService的实现”出现的错误这完全可以理解,但不