1
resposta

Não esta listando dados do livro.

HTTP Status 500 - /livro.xhtml @77,74 value="#{livroBean.livros}": Property 'livros' not found on type br.com.alura.livraria.bean.LivroBean

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

        <h:column>
            <f:facet name="header">Título</f:facet>
            <h:outputText value="#{livro.titulo}" />
        </h:column>

        <h:column>
            <f:facet name="header">ISBN</f:facet>
            <h:outputText value="#{livro.isbn}" />
        </h:column>

        <h:column>
            <f:facet name="header">Preço</f:facet>
            <h:outputText value="#{livro.preco}">
                <f:convertNumber type="currency" pattern="R$ #0.00"
                    currencySymbol="R$" locale="pt_BR" />
            </h:outputText>
        </h:column>

        <h:column>
            <f:facet name="header">Data</f:facet>
            <h:outputText value="#{livro.dataLancamento.time}">
                <f:convertDateTime pattern="dd/MM/yyyy"
                    timeZone="America/Sao_Paulo" />
            </h:outputText>
        </h:column>


        <h:column>
            <f:facet name="header">Remover</f:facet>
            <h:commandLink value="remove" />
        </h:column>
    </h:dataTable>

</ui:define>

1 resposta

package br.com.alura.livraria.bean;

import java.io.Serializable; 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.alura.livraria.dao.DAO; import br.com.alura.livraria.modelo.Autor; import br.com.alura.livraria.modelo.Livro;

@ManagedBean @ViewScoped public class LivroBean implements Serializable {

private static final long serialVersionUID = 1L;

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<Livro> getLivros() {
    return new DAO<Livro>(Livro.class).listaTodos();
}

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);
    System.out.println("Escrito por: " + autor.getNome());
}

public void gravar() {
    System.out.println("Gravando livro " + this.livro.getTitulo());

    if (livro.getAutores().isEmpty()) {
        FacesContext.getCurrentInstance().addMessage("autor",
                new FacesMessage("Livro deve ter pelo menos um Autor."));
        return;
    }

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

    this.livro = new Livro();
}

public String formAutor() {
    System.out.println("Chamanda do formulario do Autor.");
    return "autor?faces-redirect=true";
}

public void comecaComDigitoUm(FacesContext fc, UIComponent component,
        Object value) throws ValidatorException {

    String valor = value.toString();
    if (!valor.startsWith("1")) {
        throw new ValidatorException(new FacesMessage(
                "ISBN deveria começar com 1"));
    }

}

}