Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Target Unreachable, identifier 'livroBean' resolved to null

Oi pessoal,

Vi que outras pessoas também tiveram este mesmo problema, mas ainda não consegui resolver o problema..

Quando tento o método gravar(), ocorre a exceção

"HTTP Status 500 - javax.el.PropertyNotFoundException: /livro.xhtml @26,81 action="#{livroBean.gravar}": Target Unreachable, identifier 'livroBean' resolved to null"..

O LivroBean esta da seguinte forma:

package br.com.caelum.livraria.bean;

import javax.faces.bean.ManagedBean;

@ManagedBean
public class LivroBean {

    public void gravar(){
        System.out.println("Gravando livro...");
    }

}

O livro.xhtml esta da seguinte forma:


<?xml version="1.0" encoding="UTF-8" ?>
<!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">

    <h:body>
        <h1>Novo Livro</h1>
        <h:form>
            <fieldset>
                <legend>Dados do Livro</legend>
                <h:panelGrid columns="2">

                    <h:outputLabel value="Titulo:" for="titulo" />
                    <h:inputText id="titulo" />

                    <h:outputLabel value="ISBN:" for="isbn" />
                    <h:inputText id="isbn" />

                    <h:outputLabel value="Preço:" for="preco" />
                    <h:inputText id="preco" />

                    <h:outputLabel value="Data de Lançamento:" for="dataLancamento" />
                    <h:inputText id="dataLancamento" />

                    <h:commandButton value="Gravar" action="#{livroBean.gravar}" />
                </h:panelGrid>
            </fieldset>
        </h:form>
    </h:body>

</html>

Eu tentei implementa o name @ManagedBean(name = "livroBean") e também não deu certo.

6 respostas

Thiago,

Ocorreu algum erro na hora de subir o servidor? Dá uma olhadinha no console e veja se apareceu alguma coisa.

Abraço!

Olá,

Você não colocou o escopo do Manager Bean.

Olá,

Quis dizer, Managed Bean.

Oi pessoal,

Verifiquei aqui Joviane, e notei somente um Warning no console no momento em que subo o servidor, será que é devido a este Warning?


fev 11, 2016 7:24:24 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
fev 11, 2016 7:24:24 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:jsf-livraria' did not find a matching property.
fev 11, 2016 7:24:24 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
fev 11, 2016 7:24:24 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
fev 11, 2016 7:24:24 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 738 ms
fev 11, 2016 7:24:24 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
fev 11, 2016 7:24:24 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
fev 11, 2016 7:24:26 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Initializing Mojarra 2.1.17 ( 20130107-1935 https://svn.java.net/svn/mojarra~svn/tags/2.1.17@11335) for context '/jsf-livraria'
fev 11, 2016 7:24:26 PM com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: PostConstruct/PreDestroy annotations present.  ManagedBeans methods marked with these annotations will have said annotations processed.
fev 11, 2016 7:24:26 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/thiago/Desenv/apache-tomcat-7.0.47/webapps/docs
fev 11, 2016 7:24:26 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/thiago/Desenv/apache-tomcat-7.0.47/webapps/examples
fev 11, 2016 7:24:27 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
fev 11, 2016 7:24:27 PM org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
fev 11, 2016 7:24:27 PM org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@5d1492ed')
fev 11, 2016 7:24:27 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/thiago/Desenv/apache-tomcat-7.0.47/webapps/ROOT
fev 11, 2016 7:24:27 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/thiago/Desenv/apache-tomcat-7.0.47/webapps/host-manager
fev 11, 2016 7:24:27 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /home/thiago/Desenv/apache-tomcat-7.0.47/webapps/manager
fev 11, 2016 7:24:27 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
fev 11, 2016 7:24:27 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
fev 11, 2016 7:24:27 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2833 ms

Cassius, tentei implementar a anotação de escopo mas permaneceu o mesmo erro, optei por usar o @RequestScoped, dai minha classe ficou desta forma que esta abaixo, é assim mesmo que deve ser implementado o escopo?


package br.com.caelum.livraria.bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class LivroBean {

    public void gravar(){
        System.out.println("Gravando livro!");
    }
}
solução!

Resolvido \o/

Pra quem tiver o mesmo problema, no meu caso faltava executar o Build no projeto, a opção Build Automatically do menu Project estava desmarcada, com isso quando eu salvo minhas implementações, não estava sendo executado o build automaticamente no projeto.

Pra resolver foi necessário executar o Clean e depois o Build também do menu Project, e marcar a opção Build Automatically pra não ter de ficar fazendo o Build manualmente.

Olá,

Muito bem.

Só para deixar claro uma coisa, o managed bean quando não tem um escopo explícito, recebe o escopo de request implicitamente, segundo a especificação: http://docs.oracle.com/javaee/7/api/javax/faces/bean/ManagedBean.html