java.lang.NullPointerException

9 respostas
java
L

Olá pessoal estou com o seguinte erro java.lang.NullPointerException no metodo de listar em um sistema web que estou fazendo. estou trabalhando com as camadas domain, dao, bean, e a parte jsf
ja testei o metodo no dao e no bean e funciona perfeitamente porem ao querer listar em uma tabela no jsf da erro segue o codigo caso alguem queira me ajudar grato desde ja.

DAO----------------------------------------------------------------------------------------------------------------

public ArrayList Listar() {

ConexaoBD conex = new ConexaoBD();

conex.Conexao();

conex.executaSql(select * from fabricante order by nome);

ArrayList lista = new ArrayList();

try {

conex.rs.first();

do {

Fabricante fabricante = new Fabricante();

fabricante.setCodigo(conex.rs.getInt(codigo));

fabricante.setNome(conex.rs.getString(nome));

fabricante.setCnpj(conex.rs.getString(cnpj));

fabricante.setTelefone(conex.rs.getString(telefone));

fabricante.setResponsavel(conex.rs.getString(responsavel));

lista.add(fabricante);

} while (conex.rs.next());
} catch (SQLException ex) {
        System.out.println("Erro em realizar pesquisa do fabricante" + ex);
       JSFUtil.mensagemErro("Erro em realizar pesquisa do fabricante" + ex);
    }
    conex.Desconecta();
    return lista;
}
BEAN--------------------------------------------------------------------------------------------

@ManagedBean(name = “MBFabricante”)

@ViewScoped

public class FabricanteBean {

private ArrayList ListaFabricantes;
public ArrayList getListaFabricantes() {

return ListaFabricantes;

}
public void setListaFabricantes(ArrayList<Fabricante> ListaFabricantes) {
    this.ListaFabricantes = ListaFabricantes;
}
public void listar() {

FabricanteDao dao = new FabricanteDao();

ListaFabricantes = dao.Listar();

}

JSF----------------------------------------------------------------------------------------------------------------

<?xml version='1.0' encoding='UTF-8' ?>
<ui:composition xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>"

xmlns:ui="<a href="http://java.sun.com/jsf/facelets">http://java.sun.com/jsf/facelets</a>"

template="templates/modeloGeral.xhtml"

xmlns:p=“<a href="http://primefaces.org/ui">http://primefaces.org/ui</a>"

xmlns:f=“<a href="http://java.sun.com/jsf/core">http://java.sun.com/jsf/core</a>"

xmlns:h=“<a href="http://xmlns.jcp.org/jsf/html">http://xmlns.jcp.org/jsf/html</a>”>

<ui:define name=“metadata”>

<f:metadata>

<f:event listener=”#{MBFabricante.listar()}”  type=“preRenderView”/>

</f:metadata>

</ui:define>
<ui:define name="menu">
    <ui:include src="includes/menuPrincipal.xhtml"/>
</ui:define>

<ui:define name="conteudo">       
    <h:form id="frmTabela">             
        <p:dataTable id="tabela" widgetVar="table" value="#{MBFabricante.listaFabricantes}" var="item" paginator="true" rows="11" emptyMessage="Nenhum registro encontrado">
            <f:facet name="header">
                <h:outputText value="Listagem de fabricantes"/>
            </f:facet>            
            <p:column headerText="Codigo">
                <h:outputText value="#{item.codigo}"/>
            </p:column>
            <p:column headerText="Nome">
                <h:outputText value="#{item.nome}"/>
            </p:column>
            <p:column headerText="Cnpj">
                <h:outputText value="#{item.cnpj}"/>
            </p:column>
            <p:column headerText="Telefone">
                <h:outputText value="#{item.telefone}"/>
            </p:column>
            <p:column headerText="Responsavel">
                <h:outputText value="#{item.responsavel}"/>
            </p:column>
            <p:column headerText="Opções">
                <p:commandButton icon="ui-icon-trash" oncomplete="PF('dlgExcluir').show();" update=":formexcluir:pnlExcluir">
                   
                </p:commandButton>
                <p:commandButton icon="ui-icon-pencil" oncomplete="PF('dlgAlterar').show();" update=":frmAlterar:panelAlterar">
                  
                </p:commandButton>
            </p:column>
        </p:dataTable>
    </h:form>

9 Respostas

M

Posta a stracktrace

L
Caused by: java.lang.NullPointerException

at br.com.vendas.conexao.ConexaoBD.executaSql(ConexaoBD.java:31)

at br.com.vendas.dao.FabricanteDao.Listar(FabricanteDao.java:34)

at br.com.vendas.bean.FabricanteBean.listar(FabricanteBean.java:48)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at javax.el.ELUtil.invokeMethod(ELUtil.java:332)

at javax.el.BeanELResolver.invoke(BeanELResolver.java:537)

at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)

at com.sun.el.parser.AstValue.invoke(AstValue.java:283)

at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
M

Posta o método Conexao() e executaSql()

L
public void Conexao() {
    try {
        System.setProperty("jdbc.drivers", driver);
        con = DriverManager.getConnection(caminho, usuario, senha);
    } catch (SQLException ex) {
        System.out.println("Houve algum erro" + ex);
    }
}

public void executaSql(String sql) {
    try {
        stm = con.createStatement(rs.TYPE_SCROLL_INSENSITIVE, rs.CONCUR_READ_ONLY);
        rs = stm.executeQuery(sql);
    } catch (SQLException ex) {
        System.out.println("Erro ao executar sql" + ex);
    }
}

public void Desconecta() {
    try {
        con.close();
    } catch (SQLException ex) {
        System.out.println("Erro ao desconectar" + ex);
    }
  }
}
M

Verifica se con não esta nulo, coloca esse if em cima dele

if(con == null){
    System.out.prinln("Con esta nulo");
}
else{
   System.out.prinln("Nao esta nulo");
}
L

Informações: Con esta nulo

L

Porem agora oq devo fazer para corrigir isso?

L

Agora o estranho é que esse erro só acontece quando chamo o metodo lista no jsf pois quando testei ele no main não ocorreu problema algum

M

Alguma coisa ai esta com o valor inválido, ai não esta trazendo a conexao
verifica os valores dessas variaveis

Faz tempo q eu mão mexo com JDBC, então n lembro se lança alguma exceção ao tentar pegar a conexao, o catch do método Conexao esta sendo executado?
Se sim, coloca ex.printStackTrace() nele e então posta a stacktrace

Criado 19 de julho de 2018
Ultima resposta 20 de jul. de 2018
Respostas 9
Participantes 2