Property 'meuBean' not found on type br.com.integrator.controller.Controle

8 respostas
M

Olá pessoal,

Já faz alguns dias que estou tentando executar minha primeira aplicação Java Web no Netbeans 6.9.1. O projeto se chama “TrabComJSF”. Ao executar o projeto, aparece o seguinte report no browser:

type Exception report

message

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

exception

javax.servlet.ServletException: /trabComJSF.jsp(26,16) ‘#{controle.meuBean.nome}’ Property ‘meuBean’ not found on type br.com.integrator.controller.Controle
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

root cause

org.apache.jasper.el.JspPropertyNotFoundException: /trabComJSF.jsp(26,16) ‘#{controle.meuBean.nome} Property meuBean not found on type br.com.integrator.controller.Controle

org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:104)

javax.faces.component.UIOutput.getValue(UIOutput.java:173)

com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:189)

com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:320)

com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:200)

javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)

javax.faces.render.Renderer.encodeChildren(Renderer.java:137)

javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)

javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)

com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)

com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)

com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)

com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)

com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

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

Apresento o conteúdo dos arquivos: MeuBean.java, Controle.java, faces-config.xml, trabComJSF.jsp e boasVindas.jsp

Conteúdo de MeuBean.java:

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package br.com.integrator;

/**
*

  • @author butterflysun
    */
    public class MeuBean {

    private String nome;

    public MeuBean() {

    }

    /**

    • @return the nome
      */
      public String getNome() {
      return nome;
      }

    /**

    • @param nome the nome to set
      */
      public void setNome(String nome) {
      this.nome = nome;
      }

}

Conteúdo de Controle.java:

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package br.com.integrator.controller;

import br.com.integrator.MeuBean;

import javax.faces.application.FacesMessage;

import javax.faces.context.FacesContext;

/**
*

  • @author butterflysun
    */
    public class Controle {

    private MeuBean meuBean;

    // get e set omitido
    // em caso de dúvida, veja o código fonte

    // inicia o bean
    
    public Controle() {
    
    meuBean = new MeuBean();
    
    }
    
    // método que será acionado pelo botão
    
    public String acao() {
    
    boolean sucesso = true;
    
    FacesContext context =
    
    FacesContext.getCurrentInstance();
    
    if (meuBean.getNome() != null) {
    
    for (int i = 0; i < meuBean.getNome().length(); i++) {
    
    char c = meuBean.getNome().charAt(i);
    
    if (!Character.isLetter© &&
    
    !Character.isSpaceChar©)
    
    {
    
    String msg =Digite somente caracteres alfabéticos;
    
    FacesMessage message =
    
    new FacesMessage(msg);
    
    context.addMessage(formulario, message);
    
    sucesso = false;
    
    break;
    
    }
    
    }
    
    } else {
    
    sucesso = false;
    
    }
    
    return (sucesso ? sucesso:falha);
    
    }
    

}

Conteúdo de faces-config.xml:

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



controle

br.com.integrator.controller.Controle

session

<navigation-rule>
    <from-view-id>/trabComJSF.jsp</from-view-id>

    <navigation-case>
        <from-outcome>sucesso</from-outcome>
        <to-view-id>/boasVindas.jsp</to-view-id>
    </navigation-case>

    <navigation-case>
        <from-outcome>falha</from-outcome>
        <to-view-id>/trabComJSF.jsp</to-view-id>
    </navigation-case>
</navigation-rule>

Conteúdo de trabComJSF.jsp:

<%–
Document : trabComJSF
Created on : 25/08/2010, 16:40:08
Author : butterflysun
–%>

<%@page contentType=“text/html” pageEncoding=“UTF-8”%>

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

JSP Page
<f:view>
        <h:form id ="formulario">
            Digite seu nome:
            <h:inputText id="nome"
                         value="#{controle.meuBean.nome}"
                         required="true" />

            <h:commandButton
                action = "#{controle.acao}"
                value = "Enviar"
                id = "submit" />

            <br/>
            <h:messages/>
        </h:form>
    </f:view>

</body>

Conteúdo de boasVindas.jsp:

<%–
Document : boasVindas
Created on : 25/08/2010, 16:57:45
Author : butterflysun
–%>

<%@page contentType=“text/html” pageEncoding=“UTF-8”%>

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

Boas Vindas!

Olá


</body>

Devo confessar que não faço a mínima ideia da origem deste problema. Enquanto posto esta dúvida no fórum, continuarei a perseguir a correção desta exceção.
Qualquer comentário relevante é bem-vindo!
Por favor, eu preciso de uma luz.

Atenciosamente,

markone

8 Respostas

D

Na sua classe Controle vc tem que ter um get e um set para o atributo meuBean. Inclui o codigo abaixo:

public void setMeuBean(MeuBean mb){
    meuBean= mb;
}

public MeuBean getMeuBean() {
    return meuBean;
}

O JSF acessa objetos por meio dos getters e setters.

M

Olá dsjbv:

Sua dica caiu como uma luva. E tb gostaria de lembrar que para a página boasVindas.jsp apresente o nome digitado em trabComJSF.jsp pode ser feita a seguinte alteração em boasVindas.jsp:

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

Boas Vindas!

Olá


</body>

Muitíssimo obrigado pelo apoio!

Até a próxima!

D

Só uma coisa, já que vc está iniciando seus estudos em JSF acho que vc podia estudar a versão mais nova, que é a 2.0. Essa versão traz algumas novidades interessantes. Na minha humilde opinião vale a pena já que vc está começando agora.

M

dsjbv,

A versão 2.0 é uma versão estável? Em caso positivo, para substituir o 1.2 pelo 2.0, basta apagar o diretório correspondente e descompactar o pacote mais atual. Eu trabalho com o Ubuntu 10.04 LL.

Obrigado!

D

markone:
dsjbv,

A versão 2.0 é uma versão estável? Em caso positivo, para substituir o 1.2 pelo 2.0, basta apagar o diretório correspondente e descompactar o pacote mais atual. Eu trabalho com o Ubuntu 10.04 LL.

Obrigado!

É estável sim, foi lançada no final do ano passado e já estou usando em um projeto lá no trabalho.
Vc tá usando o netbeans, certo? Então, vc pode criar um projeto web e selecionar o JSF versão 2.0 e o projeto já vai estar configurado com o JSF. Uma coisa que vc vai notar é que não há mais necessidade do faces-config.xml. Vc configura os beans com annotations. Mas isso não impede de usar o faces-config não. Lá no trabalho a gente tá usando pra configurar o EL do Spring e o bundle de mensagens.
Se quiser incluir o JSF 2.0 no projeto que já existe é só baixar os 2 jars (não lembro de cabeça o nome, mas eles têm o mesmo nome da versão antiga) e incluir as libs do projeto.

M

Boa noite dsjbv,

Estou precisando de consultores para sanar dúvidas para dominar JSF e Facelets utiilizando Spring 2.5 e JPA.
Motivo: previsão de entrega de Prática em Desenvolvimento de Sistemas, desenvolvendo uma aplicação Web em Java EE 5 conforme lógica de negócios a definir.
Essa prática é o último trabalho para concluir um curso de graduação à distância pela Unitins (Fundação Universidade do Tocantins).
Eu quero ter diploma reconhecido pelo MEC em Tecnologia em Análise e Desenvolvimento de Sistemas para disputar algum cargo público que exige esse certificado, na área de TI (seja como Desenvolvedor e/ou como Analista de Sistemas).
Portanto, se não for incomodo para você, por favor forneça-me um e-mail para que seja possível sanar dúvidas de outras naturezas.

Agradeço pela sua boa vontade!

D

cara, eu recomendo vc dar uma olhada no livro “Dominando JavaServer Faces e Facelets utilizando Spring 2.5, Hibernate e JPA”. Ele vai te ter dar uma base pra vc começar a desenvolver seu projeto. Se quiser ajuda deixa seu email que eu te mando um material pra vc dar uma olhada. Vlw …

M

Pois não dsjbv, aqui vai o meu e-mail:

[email removido]

E pode ter certeza que eu estou estudando por este livro.

Atenciosamente,

Criado 25 de agosto de 2010
Ultima resposta 28 de ago. de 2010
Respostas 8
Participantes 2