Любой компонент CDI, который я вставляю в класс реализации org.primefaces.model.LazyDataModel
, получается null. Сам класс реализации ленивой модели представляет собой компонент CDI @Named
с областью действия @javax.faces.bean.ViewScoped
. Это выглядит следующим образом:Невозможно вставить компонент CDI в Primefaces Класс реализации LazyDataModel
@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?
}
}
я получил предупреждение в затмении из Java при нагнетании в lazymodel класса реализации компонента. Предупреждение было чем-то вроде этого: класс класса lazymodel не может проксироваться контейнером, так как он не содержит конструктора no-arg, не являющегося частным, а компонент не является обычным бобом (что-то в этом роде).
Есть еще одна проблема, в классе реализации LazyDataModel я установил rowCount в размере фактического размера фактического списка данных (размер после фильтрации в сетке). Но после того, как экземпляр класса реализации lazymodel снаружи в некотором CDI-компоненте дает мне rowCount нуля.
new MyLazyModel(actualDataList).getRowCount()
-> 0
После отладки я нашел, что это действительно содержит полный фактический список данных, но сверку по-прежнему равен нулю.
Мне нужно было на ходу rowCount
отфильтрованных строк по мере ввода и фильтрации их на сетке сетки, чтобы я мог динамически обновлять outputLabel с значением строки rowCount в настоящее время отфильтрованной сетки.
int currentRowCount = actualDataListInLazyModelClass.size();
Я буду обновлять outputLabel так:
org.primefaces.context.RequestContext.getCurrentInstance.update("myForm:recordCountLabel");
Но до этого мне нужно установить свойство введенного боба (View в бэк боб) со значением сверки, но нагнетаемой бобом сам поворачивает вне null как сказано ранее.
getInjectedObj().setNoOfRecords(Integer.toString(currentRowCount));
// NULL POINTER потому getInjectedObj() является нулевым
Извините, если я описал вещи более или менее из-за ограничений в моем конце.
Это фактически два отдельных вопроса. Тема не имеет ничего общего с реальной причиной. Помните это в следующий раз. – Kukeltje
Соответственно, я изменил название вопроса. – user2918640