Я пытаюсь получить набор значений из базы данных и назначил его selectItem (компонент пользовательского интерфейса Primefaces).Но он не назначен, а показывает nullPointerException.
У меня есть две страницы просмотра на моей первой странице, просто у меня есть кнопка команды для входа в функцию для извлечения некоторых данных из БД, затем я назначил эти значения selectITem (раскрывающемуся) на другой странице просмотра.
Моя первая страница просмотра -
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head></h:head>
<h:body>
<h:form>
<p:panel header="autocomplete">
<h:panelGrid columns="2">
<p:commandButton value="Submit" action="#{receiveclass.retrieve}" ajax="false"> </p:commandButton>
</h:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>
. Ява-код для действия: ..
public String retrieve(){
FacesContext context = FacesContext.getCurrentInstance();
loginBean loginBean = (loginBean) context.getApplication().evaluateExpressionGet(context, "#{loginBean}", loginBean.class);
List<loginBean> retList=loginDao.retrieval();
loginBean.setRetList(retList);
return "success";
}
}
В приведенном выше коде значение правильно установлено как retList послеизвлекая его из базы данных, часть Db записывается в loginDao.
loginBean - это не что иное, как управляемый bean-компонент моей следующей страницы просмотра, где у меня есть тег selectItem, я вызвал установщик этого selectItem с полученным списком изDB.
часть компонента: ..
List<loginBean> retList;
public List<loginBean> getRetList() {
return retList;
}
public void setRetList(List<loginBean> retList) {
this.retList = retList;
На следующей странице просмотра я присвоил значение для selectItems как
<h:outputText value="Current City"></h:outputText>
<p:selectOneMenu style="width:150px" id="currentCity" value="#{loginBean.currentCity}" required="true" immediate="true" requiredMessage="Select your city" label="Country">
<f:selectItem value="#{loginBean.retList}"></f:selectItem>
</p:selectOneMenu>
После выполнения моей консолиговорит ...
SEVERE: Error Rendering View[/login.xhtml]
java.lang.NullPointerException
at org.apache.myfaces.shared_impl.renderkit.html.HtmlResponseWriterImpl.write(HtmlResponseWriterImpl.java:867)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeSelectItems(SelectOneMenuRenderer.java:282)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeInput(SelectOneMenuRenderer.java:96)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:75)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:53)
Я пробовал несколько способов, но без улучшения.