Olá,
Estou tendo esse problema no meu código, alguem consegue me ajudar, segue imagem do erro abaixo:
Classe AdminLivrosBean
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.transaction.Transactional;
import com.dev.casadocodigo.loja.daos.AutorDao;
import com.dev.casadocodigo.loja.daos.LivroDao;
import com.dev.casadocodigo.loja.models.Autor;
import com.dev.casadocodigo.loja.models.Livro;
@Named
@RequestScoped
public class AdminLivrosBean {
private Livro livro = new Livro();
@Inject
private LivroDao dao;
@Inject
private AutorDao autorDao;
@Inject
private FacesContext context;
private List<Integer> autoresId = new ArrayList<>();
@Transactional
public String salvar() {
for (Integer autorId : autoresId) {
livro.getAutores().add(new Autor(autorId));
}
dao.salvar(livro);
context.getExternalContext()
.getFlash().setKeepMessages(true);
context
.addMessage(null, new FacesMessage("Livro cadastrado com sucesso!"));
return "/livros/lista?faces-redirect=true";
}
public List<Autor> getAutores() {
return autorDao.listar();
}
public Livro getLivro() {
return livro;
}
public void setLivro(Livro livro) {
this.livro = livro;
}
public List<Integer> getAutoresId() {
return autoresId;
}
public void setAutoresId(List<Integer> autoresId) {
this.autoresId = autoresId;
}
}
Arquivo form.xhtml
<!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://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:form>
<div>
<h:outputLabel value="Título" />
<h:inputText value="#{adminLivrosBean.livro.titulo}"
required="true" id="titulo" />
<h:message for="titulo" />
</div>
<div>
<h:outputLabel value="Descrição"/>
<h:inputTextarea rows="4" cols="20"
required="true" value="#{adminLivrosBean.livro.descricao}"
id="descricao" />
<h:message for="descricao" />
</div>
<div>
<h:outputLabel value="Número de Páginas"/>
<h:inputText value="#{adminLivrosBean.livro.numeroPaginas}"
required="true" id="numeroPaginas" />
<h:message for="numeroPaginas" />
</div>
<div>
<h:outputLabel value="Preço"/>
<h:inputText value="#{adminLivrosBean.livro.preco}"
required="true" id="preco" />
<h:message for="preco" />
</div>
<div>
<h:outputLabel value="Autores" />
<h:selectManyListbox value="#{adminLivrosBean.autoresId}"
converter="javax.faces.Integer" id="autores">
<f:selectItems value="#{adminLivrosBean.autores}"
var="autor"
itemValue="#{autor.id}" itemLabel="#{autor.nome}" />
</h:selectManyListbox>
<h:message for="autores" />
</div>
<h:commandButton value="Cadastrar" action="#{adminLivrosBean.salvar}" />
</h:form>
</html>
Alguém consegue me ajudar, pois o método salvar está na classe bean.
Estou seguindo conforme o instrutor fez na aula do link abaixo: https://github.com/alura-cursos/java-ee-webapp/tree/master/javaee-m1a3