1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

2 ComboBox do JSF retornando NULL

Observem o código em JSF de uma pagina XHTML;

<p:outputLabel value="Cidade" for="cidade" />
<p:selectOneMenu id="cidade" value="#{cadastroImovelBean.cidade}">
<p:ajax listener="#{cadastroFornecedoresBean.onCidadeChange}" update="bairro" />
    <f:selectItem itemLabel="Selecione a cidade do Imóvel" />
    <f:selectItems value="#{cadastroImovelBean.raizesCidades}" var="cidade"
     itemValue="#{cidade}"  itemLabel="#{cidade.nome}"/>
</p:selectOneMenu>

<p:outputLabel value="Bairro" for="bairro" />
<p:selectOneMenu id="bairro" >
    <f:selectItem itemLabel="Selecione o bairro do Imóvel" />
    <f:selectItems value="#{cadastroImovelBean.bairroPorCidade}" var="bairro"
     itemValue="#{bairro}"  itemLabel="#{bairro.nome}"/>
</p:selectOneMenu>

eu consigo carregar a primeira lista que é as cidade, mas não consigo carregar os bairros

meu banco de dados está assim;

https://www.filepicker.io/api/file/C1Vhgs6T5aDUyKnej7GN

Essa é uma classe Bean

package br.com.terezinha.imobiliaria.controller;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.terezinha.imobiliaria.model.Bairro;
import br.com.terezinha.imobiliaria.model.Cidade;
import br.com.terezinha.imobiliaria.model.Imovel;
import br.com.terezinha.imobiliaria.repository.Bairros;
import br.com.terezinha.imobiliaria.repository.Cidades;

@Named
@ViewScoped
public class CadastroImovelBean implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private Imovel imovel;

    private Cidade cidade;

    private Bairro bairro;

    private List<Cidade> raizesCidades;
    private List<Bairro> bairroPorCidade;

    @Inject
    private Cidades cidades;

    @Inject
    private Bairros bairros;

    public CadastroImovelBean() {

    }

    public void onCidadeChange() {
        bairroPorCidade = null;
        if(bairro !=null){
            bairroPorCidade = bairros.porCidade(cidade);
        }
    }




    public void inicializar() {
        raizesCidades = cidades.raizesC();
    }

    public List<Cidade> getRaizesCidades() {
        return raizesCidades;
    }

    public Imovel getImovel() {
        return imovel;
    }

    public void setImovel(Imovel imovel) {
        this.imovel = imovel;
    }

    public Cidade getCidade() {
        return cidade;
    }

    public void setCidade(Cidade cidade) {
        this.cidade = cidade;
    }

    public List<Bairro> getBairroPorCidade() {
        return bairroPorCidade;
    }

}

é assim que estou carregando a lista de bairros;

@Inject
private EntityManager manager;

public List<Bairro> porCidade(Cidade cidade) {
    return manager.createQuery("from Bairro b where b.cidade =:cidade", Bairro.class).setParameter("cidade", cidade)
            .getResultList();

}

Na verdade está retornando NULL a lista de a bairros e está gerando esse erro;

ADVERTÊNCIA: /imovel/CadastroImovel.xhtml @44,85 listener="#{cadastroFornecedoresBean.onCidadeChange}": Target Unreachable, identifier 'cadastroFornecedoresBean' resolved to null
javax.el.PropertyNotFoundException: /imovel/CadastroImovel.xhtml @44,85 listener="#{cadastroFornecedoresBean.onCidadeChange}": Target Unreachable, identifier 'cadastroFornecedoresBean' resolved to null
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:107)
    at org.primefaces.component.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:44)
    at javax.faces.event.AjaxBehaviorEvent.processListener(AjaxBehaviorEvent.java:113)
    at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106)
    at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:766)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:786)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1251)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1527)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1484)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags jsf java cdi ou faça a sua própria pergunta.