Bom dia galera,
Não estou entendendo, após ter inserido as informações do exercicio para exibir a lista dos autores do selectOneMenu no meu arquivo Livro.xhtml, começou a exibir esse erro:
HTTP Status 500 - /Livro.xhtml @36,66 value="#{livroBean.autorId}": Property 'autorId' not found on type br.com.caelum.livraria.bean.livroBean
type Exception report
message /Livro.xhtml @36,66 value="#{livroBean.autorId}": Property 'autorId' not found on type br.com.caelum.livraria.bean.livroBean
description The server encountered an internal error that prevented it from fulfilling this request.
exception javax.servlet.ServletException: /Livro.xhtml @36,66 value="#{livroBean.autorId}": Property 'autorId' not found on type br.com.caelum.livraria.bean.livroBean 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 @36,66 value="#{livroBean.autorId}": Property 'autorId' not found on type br.com.caelum.livraria.bean.livroBean com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111) javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) javax.faces.component.UIOutput.getValue(UIOutput.java:169) com.sun.faces.renderkit.html_basic.MenuRenderer.getCurrentSelectedValues(MenuRenderer.java:647) com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:748) com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:843) com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:297) javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786) javax.faces.render.Renderer.encodeChildren(Renderer.java:168) javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782) com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:437) com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124) com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.32 logs.
Sendo que minha estrutura está toda certinha, tenho as minhas classes Livro, Autor, livroBean e autorBean dentro de br.com.caelum.livraria.bean
Minha classe livroBean está como se pede no exercicio.
package br.com.caelum.livraria.bean;
import java.io.Serializable; import java.util.List;
import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped;
import br.com.caelum.livraria.dao.DAO; import br.com.caelum.livraria.bean.Autor; import br.com.caelum.livraria.bean.Livro;
@ManagedBean @ViewScoped public class livroBean implements Serializable {
private Livro livro = new Livro(); private Integer autorId;
public void setAutorId(Integer autorId) { this.autorId = autorId; }
public Integer getAutorId() { return autorId; }
public Livro getLivro() { return livro; }
public List getLivros() { return new DAO(Livro.class).listaTodos(); }
public List getAutores() { return new DAO(Autor.class).listaTodos(); }
public List getAutoresDoLivro() { return this.livro.getAutores(); }
public void adicionarAutor() {
Autor autor = new DAO(Autor.class).buscaPorId(this.autorId); System.out.println("Usando autor " + autor.getNome()); this.livro.adicionaAutor(autor); }
public void gravar() { System.out.println("Gravando livro " + this.livro.getTitulo());
if (livro.getAutores().isEmpty()) { throw new RuntimeException("Livro deve ter pelo menos um Autor."); }
new DAO(Livro.class).adiciona(this.livro); }
}
E meu arquivo Livro.xhtml está da seguinte forma:
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Novo Livro
Dados do Livro
Dados do Autor
Não consegui compreender aonde pode estar o erro, desde já agradeço por qualquer ajuda.