Estou tentando fazer uma busca para carregar o datatable com base no objeto selecionado num SelectOneMenu. Estou iniciando em programação, mas me parece estranha a pilha de null’s.
Essa é a exceção:
com.sun.faces.context.PartialViewContextImpl processPartial
INFORMAÇÕES: java.lang.NullPointerException
java.lang.NullPointerException
at com.calendarioAp.controller.GestaoAreaBean.consultar(GestaoAreaBean.java:71)
at com.calendarioAp.controller.GestaoAreaBean.localSelecionado(GestaoAreaBean.java:53)
at com.calendarioAp.util.SetConverter.getAsObject(SetConverter.java:19)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:171)
at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(MenuRenderer.java:201)
at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:318)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.getConvertedValue(SelectOneMenuRenderer.java:67)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045)
at javax.faces.component.UIInput.validate(UIInput.java:975)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1248)
at javax.faces.component.UIInput.processDecodes(UIInput.java:679)
at
...
Meu --> .xhtml
<f:metadata>
<f:viewAction action="#{gestaoAreaBean.consultar}"></f:viewAction>
<f:viewAction action="#{gestaoAreaBean.consultaLocais}"></f:viewAction>
</f:metadata>
<h:form id="formulario">
<p:messages id="msgs" />
<p:selectOneMenu id="local" converter="localConverter" value="#{gestaoAreaBean.selectedlocal}" immediate="true">
<f:selectItem itemLabel="Selecione" itemValue="#{null}" />
<f:selectItems value="#{gestaoAreaBean.todosLocais}" var="localizacao"
itemLabel="#{localizacao.nomeLocal}"
itemValue="#{localizacao}" />
<p:ajax event="change" render="gestaoAreaBean.localSelecionado" execute="@this" />
</p:selectOneMenu>
Meu --> Bean:
//Esse método deve receber o ID do objeto selecionado no SelectOneMenu e executar a pesquisa para preencher o DataTable.
public String localSelecionado(String value){
localSelect = Long.valueOf(value);
System.out.println("Local selecionado Long -> "+ localSelect);
consultar();
return value;
}
//Métodos que inicia a chamada da pesquisa tendo o ID como parâmetro:
public void consultar(){
System.out.println( "local selecionado dentro do consultar "+ localSelect);
if(localSelect != null){
Long id = localSelect;
todasAreas = areas.areasLocaisId(id);
}
}
//Método que executa a pesquisa e devolve o list:
public List<Area> areasLocaisId(Long id){
return manager.createQuery("from Area a where a.localizacao = :id", Area.class).setParameter("id", manager.getReference(Local.class, id)).getResultList();
}