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

Aula 4 - Completando o sistema e lidando com escopos do JSF 2

No video quando chega nos 06:00min;

No console nao aparece nada, tbm nao é lançada nenhuma exception, adicionei o @ViewScoped, pois mostra no video e tbm nao acontece nenhuma ação

codigo do erro no console:

Hibernate: select autor0_.id as id1_0_, autor0_.nome as nome2_0_ from Autor autor0_

mai 12, 2019 8:12:59 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages

INFO: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.

sourceId=j_idt4:j_idt13[severity=(ERROR 2), summary=(j_idt4:j_idt13: '{autor.id}' deve ser um número formado por um ou mais dígitos.), detail=(j_idt4:j_idt13: '{autor.id}' deve ser um número entre -2147483648 e 2147483647 Exemplo: 9346)]

Hibernate: select autor0_.id as id1_0_, autor0_.nome as nome2_0_ from Autor autor0_

mai 12, 2019 8:13:01 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages

INFO: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.

sourceId=j_idt4:j_idt13[severity=(ERROR 2), summary=(j_idt4:j_idt13: '{autor.id}' deve ser um número formado por um ou mais dígitos.), detail=(j_idt4:j_idt13: '{autor.id}' deve ser um número entre -2147483648 e 2147483647 Exemplo: 9346)]


xhtml livro:

<h:body>

Novo Livro

<h:form> Dados do Livro <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 Lançamento:" for="dataLancamento" />
            <h:inputText id="dataLancamento"
                value="#{livroBean.livro.dataLancamento}" />



        </h:panelGrid>
    </fieldset>


    <fieldset>
        <legend>Dados do Autor</legend>
        <h:outputLabel value="Selecione um autor" for="autor" />
        <h:selectOneMenu value="#{livroBean.autorId}">
            <f:selectItems value="#{livroBean.autores}" var="autor" itemLabel="#{autor.nome}" itemValue="{autor.id}" />
        </h:selectOneMenu>
        <h:commandButton value="Gravar Autor"    action="#{livroBean.gravarAutor}" />
    </fieldset>
    <h:commandButton value="Gravar" action="#{livroBean.gravar}" />
</h:form>


Bean:

package br.com.caelum.livraria.bean;

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.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 setLivro(Livro livro) {
    this.livro = livro;
}


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 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>(Livro.class).adiciona(this.livro);
}

public void gravarAutor() {
    Autor autor = new DAO<Autor>(Autor.class).buscaPorId(this.autorId);
    this.livro.adicionaAutor(autor);
    System.out.println("Livro escrito por: "+ autor.getNome());
}

}

segue o link do projeto https://github.com/euhenriquemarques/JSF2---alura.git

2 respostas

trocar seu Integer autorId para int autorId deve resolver, provavelmente está retornando null nesse atributo

solução!

Boa noite, o erro continua>

Hibernate: select autor0_.id as id1_0_, autor0_.nome as nome2_0_ from Autor autor0_

mai 13, 2019 6:15:44 PM com.sun.faces.renderkit.html_basic.HtmlBasicRenderer getForComponent

WARNING: Não foi possível encontrar o componente com a ID autor na exibição.

Hibernate: select autor0_.id as id1_0_, autor0_.nome as nome2_0_ from Autor autor0_

mai 13, 2019 6:15:44 PM com.sun.faces.renderkit.RenderKitUtils renderUnhandledMessages

INFO: AVISO: FacesMessage(s) foram enfileirados, mas podem não ter sido exibidos.
sourceId=j_idt4:j_idt13[severity=(ERROR 2), summary=(j_idt4:j_idt13: '{autor.id}' deve ser um número formado por um ou mais dígitos.), detail=(j_idt4:j_idt13: '{autor.id}' deve ser um número entre -2147483648 e 2147483647 Exemplo: 9346)]</code>