Jsf - Bean of type null[RESOLVIDO]

10 respostas
G
esse é o meu jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
    <f:view>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
            <h:form id="login_form">
                <h:panelGrid  columns="2" id="login_panel">
                    <f:facet name="header">
                        <h:outputText value="Login" />
                    </f:facet>
                    <f:facet name="footer">
                        <h:commandButton value="Logar" action="login"/>
                    </f:facet>
                    
                    <!--campo usuario-->
                    
                    <h:outputLabel for="usuario">
                        <h:outputText value="Usuario"/>
                    </h:outputLabel>
                    <h:inputText value="#{MBLogin.LO.usuario}" id="usuario" />
                    
                    <!--campo senha-->
                    
                    <h:outputLabel for="senha">
                        <h:outputText value="Senha"/>
                    </h:outputLabel>                    
                    <h:inputSecret value="#{MBLogin.LO.password}" id="senha" />
                </h:panelGrid>
            </h:form>       
        </body>
    </f:view>
</html>

esse é meu faces-config

<?xml version='1.0' encoding='UTF-8'?>


<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config>
    <navigation-rule>
        <from-view-id>/login.jsp</from-view-id>
        <navigation-case>
            <from-outcome>ok</from-outcome>
            <to-view-id>/index.jsp</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>erro</from-outcome>
            <to-view-id>/login.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
    
 <managed-bean>
     <managed-bean-name>MBLogin</managed-bean-name>
     <managed-bean-class>com.metaway.beans.MBLogin</managed-bean-class>
     <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
</faces-config>
meu managed bean
/*
 * ControleLogin.java
 *
 * Created on 16 de Janeiro de 2009, 13:28
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.metaway.beans;

import com.metaway.dao.LoginDAO;
import com.metaway.pojo.login;


/**
 *
 * @author Mtw3
 */
public class MBLogin{

    
    private LoginDAO loginDAO= new LoginDAO();
    
    private login LO;
    
    /** Creates a new instance of ControleLogin */
    public MBLogin() {
    }    
    
    
    //pojo-----------------
    public login getLO() {
        return LO;
    }
    
    public void setLO(login LO) {
        this.LO = LO;
    }
    //------------------pojo
    
    
    public String login(){
        System.out.println("usuario= "+LO.getUsuario());
        System.out.println("password= "+LO.getPassword());
        boolean ok = loginDAO.Login(LO.getUsuario(),LO.getPassword());
        if(ok==true){
            return "ok";
        }else return "erro";
    }
}

meu pojo

/*
 * login.java
 *
 * Created on 16 de Janeiro de 2009, 13:27
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.metaway.pojo;

import java.io.Serializable;


public class login {
    
   private String usuario;
   private String password;
    
    public login() {
    }
    public login(String usuario, String password){
        this.setUsuario(usuario);
        this.setPassword(password);
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
    
}

e meu dao

/*
 * LoginDAO.java
 *
 * Created on 16 de Janeiro de 2009, 13:35
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.metaway.dao;

import com.metaway.bd.Conexao;
import java.sql.*;

/**
 *
 * @author Mtw3
 */
public class LoginDAO {
    
    /** Creates a new instance of LoginDAO */
    public LoginDAO() {
    }
    
    public boolean Login(String usuario, String password){
        boolean ok=false;
        try {
            String sql = "select * from usuario where usuario = ?";
            Connection c = Conexao.getConnection();
            PreparedStatement pstm = c.prepareStatement(sql);
            pstm.setString(1,usuario);
            ResultSet rs = pstm.executeQuery();
            if(!rs.getString("usuario").equals(null)){
                if(rs.getString("usuario").equals(usuario)){
                    ok=true;
                }
            }else{
                ok=false;
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return ok;
    }
    
    
}

o objetivo é simples, dgita-se o username e a senha, e verfica-se oq foi digitado com oq esta no banco....

qnd clico no botao logar ganho esse erro ...

javax.servlet.ServletException: Error testing property 'usuario' in bean of type null

10 Respostas

programadora

Olá…

pelo que pude observar no seu código, na linha 23 você está tentando direcionar a ação do seu botão para o método “login” da classe MBLogin, certo? Se essa for sua idéia, você deve modificá-la desta forma:

<h:commandButton value="Logar" action="#{MBLogin.login}"/>

veja se isto funciona.

G

eu ja havia mudado esse trexo do codigo … esqueci de editar o post :stuck_out_tongue:

continua com o mesmo erro

programadora

Tente mudar então o nome da sua classe de login com l minúsculo para Login com L maiúsculo.

T

onde vc está usando isso?

//pojo-----------------  
     public login getLO() {  
         return LO;  
     }  
       
     public void setLO(login LO) {  
         this.LO = LO;  
     }  
     //------------------pojo
G

onde vc está usando isso?

//pojo-----------------    
    public login getLO() {    
         return LO;    
    }    
        
    public void setLO(login LO) {    
         this.LO = LO;    
   }

esses dois metodos getLO e setLO, são usados pra poder fazer referencia aos metodos da classe Login.java, sem eles o jsf n consegue pegar as propriedades da classe, ele nem renderisa a pagina sem esses metodos ....

continuo com o mesmo erro .... ao clicar no botao d login ganho o erro :
javax.servlet.ServletException: Error testing property 'usuario' in bean of type null

alguem ... ?

gomesrod

Você precisa instanciar o objeto “login”, ou na declaração ou no construtor.
Quando o faces chama o getLO() ele está recebendo um null, e depois tenta obter a propriedade “usuario” em cima deste null.

G

tem razão acho que me passei :stuck_out_tongue:

ta funcionando

Hellmanss

Desculpem por tirar tópico do baú…

Estou com o mesmo problema que o post do colega acima, porém ele não informou o que exatamente fez para corrigir esse problema :frowning:

Estou fazendo uns “Hello Wolrd” (fiz alguns) e sempre me resulta nesse mesmo erro:

Error testing property ‘usuario’ in bean of type null

WTF? :lol:

G

eiiita … o codigozinho podre esse ein …

nem lembrava q tinha feito algo tão ruim assim … :oops:

mas então, da um new no objeto ou quando declara a variavel private Variavel variavel = new Variavel();
ou no construtor da classe

public Classe(){ variavel = new Variavel(); }

ou algo do tipo ^^

ps: parece que foi anos luz q postei isso :o

Hellmanss

“HelloWorld JSF”!
:lol: :lol:

Cara, meu codigo estava se perdendo por eu ter criado um constrtor com argumentos e ter esquecido de criar o construtor padrão!

Resolvido:
Criei o Contrutor padrão e iniciei as variaveis e funcionou!

valeu cara, obrigado^^

Criado 16 de janeiro de 2009
Ultima resposta 18 de jun. de 2009
Respostas 10
Participantes 5