Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Falta do livroBean.livros para preencher a dataTable livro

Pessoal,

Não sei se perdi essa parte da aula, mas o meu livroBean.java está sem o método/propriedade "livros". Mesmo no arquivo que baixei (livraria.zip) não encontro esse trecho do código.

Pelo que entendi ele preenche a dataTable da página livros.xhtml, que fica logo abaixo do botão gravar.

Alguém pode enviar esse trecho do código para mim?

Obrigado,

livros.xhtml:

<h:dataTable value="#{livroBean.livros}" var="livro" id="tabelaLivros">

livroBean:

package br.com.caelum.livraria.bean;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;

import br.com.caelum.livraria.dao.DAO;
import br.com.caelum.livraria.modelo.Autor;
import br.com.caelum.livraria.modelo.Livro;

@ManagedBean
@ViewScoped
public class LivroBean {

    private Livro livro = new Livro();
    private Integer autorId;

    public Integer getAutorId() {
        return autorId;
    }

    public void setAutorId(Integer autorId) {
        this.autorId = autorId;
    }


    public Livro getLivro() {
        return livro;
    }

    public List<Autor> getAutores() {

        return new DAO<Autor>(Autor.class).listaTodos();

    }

    public List<Autor> getAutoresDoLivro() {

        return this.livro.getAutores();

    }


    public void gravarAutor() {
            Autor autor = new DAO<Autor>(Autor.class).buscaPorId(this.autorId);
            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.");
            FacesContext.getCurrentInstance().addMessage("autor",new FacesMessage("Livro deve ter pelo menos um Autor"));
            return;
        }

        new DAO<Livro>(Livro.class).adiciona(this.livro);
    }


    public void comecaComDigitoUm(FacesContext fc, UIComponent component, Object value) throws ValidatorException {
        String valor = value.toString();

        if (!valor.startsWith("1")) {
            FacesMessage mensagem = new FacesMessage("Deveria começar com 1");
            mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(mensagem);
        }
    }

}
1 resposta
solução!

Já encontrei a respota. Estava em um exercício do módulo.

    public List<Livro> getLivros() {
          return new DAO<Livro>(Livro.class).listaTodos();
    }