0
respostas

Aula 07 Convertendo Autor Erro ao subir projeto

O seguinte erro aparece no console. 20:08:06,345 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /casadocodigo-1.0/livros/form.xhtml: javax.servlet.ServletException: The class 'br.com.wepdev.casadocodigo.beans.AdministradorLivrosBean$Proxy$$$WeldSubclass' does not have the property 'autoresId'.

 <div>
    <h:outputLabel value="Autores" />
     <h:selectManyListbox value="#{administradorLivrosBean.livro.autores}"
         converter="autorConverter"  id="autores"> 
             <f:selectItems value="#{administradorLivrosBean.autores}"
                 var="autor"
                  itemValue="#{autor}" itemLabel="#{autor.nome}" />
              </h:selectManyListbox>
              <h:message for="autores"/>
          </div>

@FacesConverter("autorConverter") 
public class AutorConverter implements Converter {

 @Override
    public Object getAsObject(FacesContext context, UIComponent component, String id) {
        if(id == null || id.trim().isEmpty()) return null;
            System.out.println("Convertendo para o Objeto: " + id);

        Autor autor = new Autor();
        autor.setId(Integer.valueOf(id)); // Pegando o valor inteiro da String(id)
        return autor;
    }

 @Override
    public String getAsString(FacesContext context, UIComponent component, Object autorObject) {
        if(autorObject == null )  return null;
            System.out.println("Convertendo para String: " + autorObject);


        Autor autor = (Autor) autorObject;
        return autor.getId().toString();
    }

@Named
@RequestScoped
public class AdministradorLivrosBean {


    @Inject
    private LivroDAO livroDAO;

    @Inject
    private AutorDAO autorDAO;

    private Livro livro = new Livro();

    @Inject
    private FacesContext context;



    @Transactional
    public String salvar(){

        livroDAO.salvar(livro);

        context.getExternalContext().getFlash().setKeepMessages(true); // Deixa a mensagem atica durante o contexto de flash, coloca os dados no sessão do usuario que dura ate a ultima requisição
        context.addMessage(null , new FacesMessage("Livro cadastrado com sucesso"));

        return "/livros/lista?faces-redirect=true"; 
    }