ManagedBean

39 views
Skip to first unread message

Evandro Araujo

unread,
Sep 25, 2012, 7:47:33 AM9/25/12
to jav...@googlegroups.com
Pessoal estou comencando estudar o ManagedBean e logo no primeiro exemplo esta dando o erro abaixo:

javax.servlet.ServletException: /index.xhtml @20,63 value="#{BeanCliente.cliente.nome}": Property 'cliente' not found on type bean.ClienteBean
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:422)


root cause

javax.el.PropertyNotFoundException: /index.xhtml @20,63 value="#{BeanCliente.cliente.nome}": Property 'cliente' not found on type bean.ClienteBean
    com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
    javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
    javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
    javax.faces.component.UIOutput.getValue(UIOutput.java:169)
    org.primefaces.util.ComponentUtils.getStringValueToRender(ComponentUtils.java:61)
    org.primefaces.component.inputtext.InputTextRenderer.encodeMarkup(InputTextRenderer.java:86)
    org.primefaces.component.inputtext.InputTextRenderer.encodeEnd(InputTextRenderer.java:53)
    javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
    com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)

index.html
[code]
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>eTest</title>
</h:head>
<h:body>




    <h:form>
        <h1 align="center">HOME PAGE</h1>
        <h:panelGrid columns="2">
        <h:outputLabel value="Nome"/>
        <p:inputText id="nome" value="#{BeanCliente.cliente.nome}"/>       
        <p:commandButton id="Salvar" value="Salvar" action="#{BeanCliente.salvar}">
        </p:commandButton>
       
       
       
        </h:panelGrid>


    </h:form>
</h:body>
</html>

----bean

package bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import banco.BancoDeClientes;
import modelo.Cliente;
@ManagedBean(name = "BeanCliente")
@SessionScoped
public class ClienteBean {
    BancoDeClientes bdc = new BancoDeClientes();
    Cliente cliente = new Cliente();
   
   
    public String Salvar(){
        System.out.println("teste");
        return "sucesso";
       
    }

}


classe cliente

package modelo;

import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import banco.BancoDeClientes;


@Entity
@Table (name="TB_CLIENTE")


public class Cliente {
    @Id
    private String CPF;
    private String nome;
    private String descricao;
    private String telefone;
    private String observacao;
    private String senha;
    public String getCPF() {
        return CPF;
    }
    public void setCPF(String cPF) {
        CPF = cPF;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getDescricao() {
        return descricao;
    }
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    public String getTelefone() {
        return telefone;
    }
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
    public String getObservacao() {
        return observacao;
    }
    public void setObservacao(String observacao) {
        this.observacao = observacao;
    }
    public String getSenha() {
        return senha;
    }
    public void setSenha(String senha) {
        this.senha = senha;
    }
   
   
    /*public static void main(String[] args) {
        Cliente cli = new Cliente();
        cli.setCPF("279.524.258-35");
       
        BancoDeClientes bd = new BancoDeClientes();
        bd.salvar(cli);
       
    }*/

}

[/code]


Alguem pode me ajudar por favor?

Rogério Martins da Silva

unread,
Sep 25, 2012, 8:17:08 AM9/25/12
to jav...@googlegroups.com
bom dia, para seu bean cliente ser visivel no seu ManagedBean vc deve declara-lo como atribudo de classe e fazer os métodos set e get do mesmo.

2012/9/25 Evandro Araujo <evandr...@gmail.com>

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Atenciosamente: Rogério Martins da Silva
Bacharel em Sistemas de Informação - Universidade Estadual de Goiás
Desenvolvedor Java / C# / PHP
MSN | Talk : rogerioma...@gmail.com
Contato Claro: (64) 8402-2308 
Contato Oi: (64) 8404-8590
Contato Tim: (64) 8122-2608
skype: rogeriomartinsilva

"Antes de imprimir pense em sua responsabilidade e comprometimento com a preservação do meio ambiente"

"Eu queria mudar o mundo. Mas não me deram o código fonte"

"Qualquer tolo pode escrever códigos que um computador entenda. Bons programadores escrevem códigos que humanos conseguem entender."

"A mente humana é limitada, mas a estupidez é ilimitada." Wilhelm Steinitz

Bruno Maomeh

unread,
Sep 25, 2012, 8:18:02 AM9/25/12
to jav...@googlegroups.com
Opa Evandro.. a tua página do faces sempre irá procurar pelos métodos getters/setters do teu managedBean..
e, pelo o que você postou, você não criou os getters/setter do seu cliente.. por isso ele não consegue encontra-lo..


--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil

Rodrigo Monteiro Ferreira

unread,
Sep 25, 2012, 8:17:20 AM9/25/12
to jav...@googlegroups.com
O atributo cliente no bean precisa ter o metodo getCliente(), quando voce faz #{clienteBean.cliente} ele procura o getCliente();

2012/9/25 Evandro Araujo <evandr...@gmail.com>

--
Você recebeu esta mensagem por que é membro do Javasf
http://groups.google.com/group/javasf
 
Conheça também o Java Brazil: http://groups.google.com/group/thejavabrazil



--
Rodrigo Monteiro
Sistemas Web
rodrigom...@gmail.com
(11) 6267-9366

Mozart Militao

unread,
Sep 25, 2012, 8:15:53 AM9/25/12
to jav...@googlegroups.com
Faltou o get e set do cliente na classe ClienteBean.

Evandro Araujo

unread,
Sep 25, 2012, 8:19:39 AM9/25/12
to jav...@googlegroups.com
Rogerio,

mas os metodos getters e setters estao na classe clientes ja....esta errado isso ??


--
Você está recebendo esta mensagem porque se inscreveu no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Visite este grupo em http://groups.google.com/group/javasf?hl=pt-BR.
 
 

Ricardo Pestana

unread,
Sep 25, 2012, 8:24:06 AM9/25/12
to jav...@googlegroups.com
Tem que  o get/set para o atributo cliente no MB....

Evandro Araujo

unread,
Sep 25, 2012, 8:28:13 AM9/25/12
to jav...@googlegroups.com
Tem que colocar isso no meu Bean:

Bruno Maomeh

unread,
Sep 25, 2012, 8:29:16 AM9/25/12
to jav...@googlegroups.com
não.. você tem que colocar o getCliente e setCliente dentro do teu managedBeans..

2012/9/25 Evandro Araujo <evandr...@gmail.com>



--
Bruno Maomeh
   http://brunomaomeh.wordpress.com

Luciano Parintins Viana

unread,
Sep 25, 2012, 8:32:53 AM9/25/12
to jav...@googlegroups.com
Assim amigo : 
package bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import banco.BancoDeClientes;
import modelo.Cliente;
@ManagedBean(name = "BeanCliente")
@SessionScoped
public class ClienteBean {
    BancoDeClientes bdc = new BancoDeClientes();
    Cliente cliente = new Cliente();

    public Cliente getCliente(){
       return cliente;
    }

    public void setCliente (Cliente cliente){
       this.cliente = cliente;
    }
    
    
    public String Salvar(){
        System.out.println("teste");
        return "sucesso";
        
    }

}
Luciano Parintins Viana
Técnico em Tecnologia da Informação
Universidade Federal do Oeste do Pará

Evandro Araujo

unread,
Sep 25, 2012, 8:31:19 AM9/25/12
to jav...@googlegroups.com
Pessoal, desculpe a ignorância, e que estou iniciando os estudos com java agora. ....
mas o que nao estou entendendo é que ja coloquei a linha de comando

    Cliente cliente = new Cliente();

nao era para pegar os getters e setters , ja que os getters e setters estao na classe cliente



Em 25 de setembro de 2012 09:29, Bruno Maomeh <bruno...@gmail.com> escreveu:

Bruno Maomeh

unread,
Sep 25, 2012, 8:39:39 AM9/25/12
to jav...@googlegroups.com
eu acho que o que você não está conseguindo entender é que a tua página.. quando ela vai acessar o teu cliente, pelo teu managedBean..
ele vai procurar pelos métodos getCliente/setCliente.. que teem que estar dentro do teu managedBean..

o faces "transformará" o BeanCliente.cliente.nome, que está declarado no teu h:inputText, em algo parecido com:
BeanCliente.getCliente().setNome(xxx);

por isso se faz necessário a declaração do getCliente/setCliente dentro do teu managedBean..

2012/9/25 Evandro Araujo <evandr...@gmail.com>

Evandro Araujo

unread,
Sep 25, 2012, 8:59:41 AM9/25/12
to jav...@googlegroups.com
Será que pode ser a versão do Eclipse?

Em 25 de setembro de 2012 09:58, Evandro Araujo <evandr...@gmail.com> escreveu:
Pessoal,

fiz da seguinte forma.



package bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import banco.BancoDeClientes;
import modelo.Cliente;
@ManagedBean(name = "BeanCliente")
@SessionScoped
public class ClienteBean {
    BancoDeClientes bdc = new BancoDeClientes();
    Cliente cliente = new Cliente();
   
   
    public Cliente getCliente(){
        return cliente;
     }

     public void setCliente (Cliente cliente){
        this.cliente = cliente;
     }
    
   
   
    public String Salvar(){
        System.out.println("teste");
        return "sucesso";
       
    }

}


e esta dando o erro :

AVISO: #{BeanCliente.salvar}: javax.el.MethodNotFoundException: /index.xhtml @21,78 action="#{BeanCliente.salvar}": Method not found: bean.Cli...@c12978.salvar()
javax.faces.FacesException: #{BeanCliente.salvar}: javax.el.MethodNotFoundException: /index.xhtml @21,78 action="#{BeanCliente.salvar}": Method not found: bean.Cli...@c12978.salvar()
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:110)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    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)

Evandro Araujo

unread,
Sep 25, 2012, 8:58:08 AM9/25/12
to jav...@googlegroups.com
Pessoal,

fiz da seguinte forma.


package bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import banco.BancoDeClientes;
import modelo.Cliente;
@ManagedBean(name = "BeanCliente")
@SessionScoped
public class ClienteBean {
    BancoDeClientes bdc = new BancoDeClientes();
    Cliente cliente = new Cliente();
   
   
    public Cliente getCliente(){
        return cliente;
     }

     public void setCliente (Cliente cliente){
        this.cliente = cliente;
     }
    
   
   
    public String Salvar(){
        System.out.println("teste");
        return "sucesso";
       
    }

}


e esta dando o erro :

AVISO: #{BeanCliente.salvar}: javax.el.MethodNotFoundException: /index.xhtml @21,78 action="#{BeanCliente.salvar}": Method not found: bean.Cli...@c12978.salvar()
javax.faces.FacesException: #{BeanCliente.salvar}: javax.el.MethodNotFoundException: /index.xhtml @21,78 action="#{BeanCliente.salvar}": Method not found: bean.Cli...@c12978.salvar()
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:110)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    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)
   

Em 25 de setembro de 2012 09:39, Bruno Maomeh <bruno...@gmail.com> escreveu:

Grazziani Batista de Carvalho

unread,
Sep 25, 2012, 8:58:11 AM9/25/12
to jav...@googlegroups.com
Concordo, Falta o Get's e Set's no manager bean. E ao invés de
instânciar o objeto direto no atributo cliente coloque-o em um
construtor sem parametros tipo:

pulic cliente{
this.cliente = new Cliente();
}

ai rola que toda instância chama um construtor sem parametro.

Mozart Militao

unread,
Sep 25, 2012, 9:06:08 AM9/25/12
to jav...@googlegroups.com
Não encontrou o método salvar que no seu MB está com o S maiúsculo. Coloca salvar com o S minusculo.

Evandro Araujo

unread,
Sep 25, 2012, 9:11:02 AM9/25/12
to jav...@googlegroups.com
agora sim,...

obrigado a todos ....desculpem o transtorno ..

Em 25 de setembro de 2012 10:06, Mozart Militao <fmoz...@gmail.com> escreveu:
Não encontrou o método salvar que no seu MB está com o S maiúsculo. Coloca salvar com o S minusculo.

--
Reply all
Reply to author
Forward
0 new messages