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

Erro na hora do click no Button "Gravar".

O objetivo é simples, escrever no console a mensagem "Gravando livro". Quando rodo o projeto aparece a tela com o formulário, mas quando aperto o Button "Gravar" esse erro acontece. O código é o mesmo da primeira parte da aula. A versão da biblioteca "javax.faces-2.1.14.jar" e a configuração do projeto, são os mesmos da aula. As únicas coisas diferentes são a versão do Tomcat (estou utilizando a versão 9.0) e a versão do java(estou utilizando o java 12).

O erro que aparece no console:

WARNING: #{livroBean.gravar}: javax.el.PropertyNotFoundException: /livro.xhtml @20,84 action="#{livroBean.gravar}": Target Unreachable, identifier [livroBean] resolved to null
javax.faces.FacesException: #{livroBean.gravar}: javax.el.PropertyNotFoundException: /livro.xhtml @20,84 action="#{livroBean.gravar}": Target Unreachable, identifier [livroBean] resolved to null
`

O código da pagina livro.xhtml:

<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>

O código da classe LivroBean.java:

import javax.faces.bean.ManagedBean;

@ManagedBean
public class LivroBean {

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

Tenta deixar assim:

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!

Conseguir resolver o erro ao trocar a versão do eclipse.