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

02 . Configuração do ambiente e os primeiros passos com JSF

Srs, bom dia!

Quando eu pressiono o botão gravar o console apresenta oseguinte erro:

Fev 27, 2015 12:19:28 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/jsf-livraria] threw exception [javax.el.PropertyNotFoundException: /livro.xhtml @26,81 action="#{livroBean.gravar}": Target Unreachable, identifier 'livroBean' resolved to null] with root cause
javax.el.PropertyNotFoundException: /livro.xhtml @26,81 action="#{livroBean.gravar}": Target Unreachable, identifier 'livroBean' resolved to null
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:107)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:101)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:791)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1256)
    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)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

Segue o meu fonte:

package br.com.caelum.livraria.bean;

import javax.faces.bean.ManagedBean;

@ManagedBean
public class LivroBean {

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

}
<?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>
         <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="Salvar" action="#{livroBean.gravar}" />
                </h:panelGrid>
            </fieldset>
         </h:form> 
    </h:body>

</html>

Este é mensagem de erro apresentada na pag web

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

Se alguém puder ajudar, eu agradeço.

9 respostas

Leandro nao consegui ver onde está o erro via linha de código, aconselho voce verificar se adicionou todos os jar no build path da aplicação, limpar o tomcat e rodar novamente

Oi, Jardelrodrigues93.

Eu fiz a "limpeza" no tomcat e deu certo. Mas confesso que não compreendi onde e porque o erro foi apresentado.

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

Eu agradeço sua ajuda. Abraço.

Leandro, não tinha erro de código, o erro que poderia ter acontecido era voce ter importado alguma biblioteca errada, mas pensei que só a limpeza no tomcat era suficiente para funcionar.

Entendo. Mais uma vez muito obrigado pela ajuda.

Qual o conteúdo do arquivo faces-config.xml?

Oi, Mario! Blz?

Segue...

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

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">

</faces-config>

O arquivo está correto. O único motivo para este erro acontecer é o managedbean não estar sendo reconhecido no servidor. O seu projeto está com algum erro? certeza que não tem nenhum x vermelho junto do nome do projeto no eclipse? Não tem nada na aba Problems ou na aba Markers do eclipse? consegue entrar no diretório do tomcat e ver se os .class estão sendo deployados no servidor?

solução!

Oi Mario, boa tarde!

No inicio tinha sim um "x" vermelho. Mas depois que eu fiz a "limpeza" no TomCat o erro não aconteceu mais e aplicação voltou a funcionar perfeitamente. Minha unica duvida e o motivo pelo qual tenho que executar essa "limpeza" no TomCat. Eu já fiz novos projetos e estou sempre tendo que efetuar essa "limpeza" para que eles voltem a funcionar perfeitamente.

É uma boa prática sepre deixar apenas um projeto configurado no TomCat?

Obrigado.

Oi Leandro

Você pode ter quantos projetos quiser configurados no mesmo tomcat, mas eventualmente na hora de configurar o projeto ocorreu um erro, o que impediu o build do projeto. Você deve ter resolvido o erro, quando escolhe o clean, força o build naquele momento.

Os erros podem ser qualquer coisa, desde local de instalação do java, versão de ferramentas ou do próprio tomcat, etc.

Existem duas abas onde você pode ver quais eram os erros, Problems e Markers. Veja dentro delas, dependendo do erro pode necessitar de uma solução diferente. Veja também se a opção Build Automatically está marcada dentro do menu Project.

Abraços