Erro no JSF ao chamar a classe especificada

19 respostas
F

Olá a todos, fiz uma telinha de castro de clientes seguindo o tutorial de jsf existente aqui no guj, mas acontece que ao clicar no commandobutton que chama o metodo inserir da classe Cliente, acontece este erro:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Base is null: Cliente
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:202)

root cause

javax.faces.el.PropertyNotFoundException: Base is null: Cliente
	org.apache.myfaces.el.ValueBindingImpl.resolveToBaseAndProperty(ValueBindingImpl.java:460)
	org.apache.myfaces.el.ValueBindingImpl.getType(ValueBindingImpl.java:172)
	com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:111)
	javax.faces.component.UIInput.getConvertedValue(UIInput.java:713)
	javax.faces.component.UIInput.validate(UIInput.java:638)
	javax.faces.component.UIInput.executeValidate(UIInput.java:849)
	javax.faces.component.UIInput.processValidators(UIInput.java:412)
	javax.faces.component.UIForm.processValidators(UIForm.java:170)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:912)
	javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:342)
	org.apache.myfaces.lifecycle.LifecycleImpl.processValidations(LifecycleImpl.java:262)
	org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)

note

Alguem pode me ajudar eu procurei por tudo e não achei algo que solucionasse o erro,
o meu faces-config.xml é este caso necessite:

<?xml version="1.0" encoding="windows-1252"?>

<!DOCTYPE faces-config PUBLIC

  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"

  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config xmlns="http://java.sun.com/JSF/Configuration">

  <navigation-rule>

    <from-view-id>/clientes.jsp</from-view-id>

  </navigation-rule>

  <managed-bean>

    <managed-bean-name>Cliente</managed-bean-name>

    <managed-bean-class>Cliente</managed-bean-class>

    <managed-bean-scope>session</managed-bean-scope>

  </managed-bean>

</faces-config>

19 Respostas

T

Dica: por algum motivo, a maior parte das tecnologias J2EE não funciona bem com classes “sem pacote”. Ponha sua classe Cliente em um pacote (por exemplo, br.com.exemplo.Cliente) e tente novamente.

F

Beleza vou fazer isto e posto aqui o resultado!

Muito obrigado pela atenção!

F

nada o mesmo erro ainda, coloquei o package na classe e recompile e no faces-config.xml alterei informando o caminho completo, br.minhaplicacao como coloquei no class.
O que pode ser?

R

como eh o metodo inserir?

F

Olá Amigo, segue abaixo o metdodo:

public boolean inserir(){
        try  {
            stm = con.createStatement();
            stm.execute("INSERT INTO cliente(nome,fantasia,cnpj,inscricao,endereco,bairro,cidade,telefone) VALUES ('"+
                        nome+"','"+fantasia+"','"+cnpj+"','"+inscricao+"','"+endereco+"','"+bairro+"','"+cidade+"','"+
                         telefone+"')");
            stm.close();
            return true;
        } catch (SQLException e ) {
            e.printStackTrace();
            return false;
        }
    }
jurunaloco

manda benze cara

R

o metodo associado ao botao deve ter uma assinatura especifica. Ele nao deve ter parametros e deve retornar String (outcome). Este outcome sera utilizado pelo navegador para determinar a proxima pagina a ser exibida.

Olha o exemplo:

<h:commandButton value=“login”
action="#{avaliador.autenticaUsuario}"/>

E o metodo:

public class Avaliador

{

…

public String autenticaUsuario() throws Exception

{

…

}

…
F

riquebueno:
o metodo associado ao botao deve ter uma assinatura especifica. Ele nao deve ter parametros e deve retornar String (outcome). Este outcome sera utilizado pelo navegador para determinar a proxima pagina a ser exibida.

Olha o exemplo:

<h:commandButton value=“login”
action="#{avaliador.autenticaUsuario}"/>

E o metodo:

public class Avaliador

{

…

public String autenticaUsuario() throws Exception

{

…

}

…


Obrigado pela resposta, mas ainda assim deu o mesmo erro :frowning:

F

riquebueno:
o metodo associado ao botao deve ter uma assinatura especifica. Ele nao deve ter parametros e deve retornar String (outcome). Este outcome sera utilizado pelo navegador para determinar a proxima pagina a ser exibida.

Olha o exemplo:

<h:commandButton value=“login”
action="#{avaliador.autenticaUsuario}"/>

E o metodo:

public class Avaliador

{

…

public String autenticaUsuario() throws Exception

{

…

}

…


Eu não to usando o outcom, estaria ligado a isto?

jurunaloco

manda exorcisa tua pasta webapps
ngm me escuta :frowning:

R

acho q pode ser. Todo metodo chamado por um action de um botao deve ser assim! A saida do metodo (outcome string) vai ser comparada com os mapeamentos definidos no faces-config.xml para definir a proxima pagina a ser exibida.

dgrava

Dá uma olhada nesse link e vê se pode te ajudar de alguma forma:

http://forum.java.sun.com/thread.jspa?threadID=694130&messageID=4054739

Abraços!

Douglas Grava

F

Para desencargo de consciência coloquei as configurações de outcome e nada :frowning:

F

dgrava:
Dá uma olhada nesse link e vê se pode te ajudar de alguma forma:

http://forum.java.sun.com/thread.jspa?threadID=694130&messageID=4054739

Abraços!

Douglas Grava


Oi Amigo eu li mas não consegui entender a resolução, pelo que vi foi no jboss a resolução.

[s]

F

Segui a dica de um colega e fiz outra pasta com outro nome e funcionou, não dá mais o erro do base is null, mas em contrapartida está dando outro erro olhe o danado:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error calling action method of component with id _id0:_id9
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)

root cause

javax.faces.FacesException: Error calling action method of component with id _id0:_id9
	org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
	javax.faces.component.UICommand.broadcast(UICommand.java:312)
	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)

note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
jurunaloco

nao é problema de navegation rule pois ele nem mesmo acha a classe para executar o metodo e preencher as edits.

é algum problema com as pastas nao sei por qual motivo. nao coloquei os jar na pasta lib do tomcat para teste. mas qdo tive o problema. fiz um novo deploy compilei e funfo certo…

agora nao sei por qual motivo ele faz isso…

F
jurunaloco:
nao é problema de navegation rule pois ele nem mesmo acha a classe para executar o metodo e preencher as edits.

é algum problema com as pastas nao sei por qual motivo. nao coloquei os jar na pasta lib do tomcat para teste. mas qdo tive o problema. fiz um novo deploy compilei e funfo certo..

agora nao sei por qual motivo ele faz isso..
Segui o indicado e olha o erro :(
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: #{Cliente.inserir}: javax.faces.el.EvaluationException: java.lang.NullPointerException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:209)

root cause

javax.faces.FacesException: #{Cliente.inserir}: javax.faces.el.EvaluationException: java.lang.NullPointerException
	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:78)
	javax.faces.component.UICommand.broadcast(UICommand.java:312)
	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:267)
	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:381)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:75)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:90)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
F

olha só a minha classe cliente:

package com.app.Pessoas;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Cliente {
    String nome,fantasia,cnpj,inscricao,endereco,bairro,cidade,telefone;
    String url;
    Connection con;
    Statement stm;
    String status;
    public Cliente(){
       
        try {
            Class.forName("org.postgresql.Driver");
            url =  "jdbc://postgresql://localhost:5432/banco";
            con = DriverManager.getConnection(url,"admin","123");
        } catch (ClassNotFoundException e){
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        
    }
    public String getNome() {
        return nome;
    }
    public String getFantasia() {
        return fantasia;
    }
    public String getCnpj() {
        return cnpj;
    }
    public String getInscricao() {
        return inscricao;
    }
    public String getEndereco() {
        return endereco;
    }
    public String getBairro() {
        return bairro;
    }
    public String getCidade() {
        return bairro;
    }
    public String getTelefone() {
        return telefone;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public void setFantasia(String fantasia) {
        this.fantasia = fantasia;
    }
    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }
    public void setInscricao(String inscricao) {
        this.inscricao = inscricao;
    }
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
    public void setBairro(String bairro) {
        this.bairro = bairro;
    }
    public void setCidade(String cidade) {
        this.cidade = cidade;
    }
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
    public String inserir(){
        try  {
            stm = con.createStatement();
            stm.execute("INSERT INTO cliente(nome,fantasia,cnpj,inscricao,endereco,bairro,cidade,telefone) VALUES ('"+ 
                        nome+"','"+fantasia+"','"+cnpj+"','"+inscricao+"','"+endereco+"','"+bairro+"','"+cidade+"','"+
                         telefone+"')");
            stm.close();
	    status = "sucesso";
            return status;
        } catch (SQLException e ) {
            e.printStackTrace();
            status = "falha";
            return status;
        }
    }
}
F

ja estou pensando em seguir as dicas do juruna loco e exorcisar meu micro eheh, apaguei tudo fiz tudo novamente e dá o mesmo erro.

:frowning:

Criado 16 de junho de 2006
Ultima resposta 19 de jun. de 2006
Respostas 19
Participantes 5