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

Erro em gravar aula 01.

Bom dia! Estou com um erro ao gravar o formulário. Já fiz de tudo que vi aqui no fórum e não deu certo.

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

    <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" value="#{livroBean.livro.titulo}"/>
                    <h:outputLabel value="ISBN:" for="isbn" />
                    <h:inputText id="isbn" value="#{livroBean.livro.isbn}"/>
                    <h:outputLabel value="Preço:" for="preco" />
                    <h:inputText id="preco" value="#{livroBean.livro.preco}"/>
                    <h:outputLabel value="Data de Lançamento:" for="dataLancamento" />
                    <h:inputText id="dataLancamento" value="#{livroBean.livro.dataLancamento}"/>
                    <h:commandButton value="Gravar" action="#{livroBean.gravar}"/>
                </h:panelGrid>
            </fieldset>
        </h:form>
    </h:body>




</html>
package br.com.caelum.livraria.bean;

import javax.faces.bean.ManagedBean;

import br.com.caelum.livraria.model.Livro;

@ManagedBean(name = "LivroBean")
public class LivroBean {

    private Livro livro = new Livro();

    public Livro getLivro() {
        return livro;
    }

    public void gravar() {
        System.out.println("Gravando livro " + this.livro.getTitulo());
    }
}
package br.com.caelum.livraria.model;

public class Livro {
    private String titulo;
    private String isbn;
    private String dataLancamento;
    private double preco;

    public Livro() {
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    public String getDataLancamento() {
        return dataLancamento;
    }

    public void setDataLancamento(String dataLancamento) {
        this.dataLancamento = dataLancamento;
    }

    public double getPreco() {
        return preco;
    }

    public void setPreco(double preco) {
        this.preco = preco;
    }
}
HTTP Status [500] – [Internal Server Error]


Type Exception Report

Message /livro.xhtml @12,81 value="#{livroBean.livro.titulo}": Target Unreachable, identifier [livroBean] resolved to null

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception
javax.servlet.ServletException: /livro.xhtml @12,81 value="#{livroBean.livro.titulo}": Target Unreachable, identifier [livroBean] resolved to null
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


Root Cause
javax.el.PropertyNotFoundException: /livro.xhtml @12,81 value="#{livroBean.livro.titulo}": Target Unreachable, identifier [livroBean] resolved to null
    com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
    com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
    javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)
    javax.faces.component.UIInput.validate(UIInput.java:960)
    javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
    javax.faces.component.UIInput.processValidators(UIInput.java:698)
    javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
    javax.faces.component.UIForm.processValidators(UIForm.java:253)
    javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
    javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
    javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1169)
    com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


Note The full stack trace of the root cause is available in the server logs.


Apache Tomcat/8.5.15
2 respostas

Você colocou o name do bean para LivroBean e ta tentando usar no xhtml livroBean (l minusculo). Tira aquele name lá da annotation @ManagedBean.

solução!

ATENÇÃO: Usando Expression Language, a primeira letra do nome da classe ManagedBean deve ser minúscula. Ex: LivroBean ficará #{livroBean}.

Não sei o que era, criei um novo projeto e funcionou normal.