1
resposta

Erro na tela autor (Alterar Autor / Validação Impedindo)

Fiz todos as alterações na classe e view livro que funciona bem o atualizar, porém não funciona corretamente na view autor. Fica sendo impedido pela validação required do campo nome, já revi os videos e ainda não encontrei o ponto de erro.

autor.xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<!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://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">

<ui:composition template="_template.xhtml">
    <ui:define name="titulo">Novo Autor </ui:define>
    <ui:define name="conteudo">
        <h:form>
            <h:messages id="messages"/>
            <fieldset>
                <legend>Dados do Autor</legend>
                <h:panelGrid columns="2">
                    <h:outputLabel value="Nome:" for="nome" />
                    <h:inputText id="nome" value="#{autorBean.autor.nome}"
                        required="true" requiredMessage="O campo Nome é campo obrigatório"
                        validatorMessage="O nome do autor precisa ter no mínumo 5 carateres">
                        <f:validateLength minimum="5" />
                        <f:ajax event="blur" render="messages" />
                    </h:inputText>

                    <h:commandButton value="Gravar" action="#{autorBean.gravar}" />
                </h:panelGrid>
            </fieldset>
            <br/>
            <fieldset>
                <legend>Dados do Autor</legend>                

                <h:dataTable value="#{autorBean.autores}" var="autor" id="tabelaAutores">
                    <h:column>
                        <f:facet name="header"> Autores </f:facet>
                        <h:outputText value="#{autor.nome}" />
                    </h:column>

                    <h:column>
                        <f:facet name="header"> Alterar </f:facet>
                        <h:commandLink value="Alterar" action="#{autorBean.atualizarAutor(autor)}"/>                            
                    </h:column>

                    <h:column>
                        <f:facet name="header"> Remover </f:facet>
                        <h:commandLink value="Remove" action="#{autorBean.removerAutor(autor)}" immediate="true"/>
                    </h:column>
                </h:dataTable>

            </fieldset>
        </h:form>
    </ui:define>
    <ui:define name="rodape" />
</ui:composition>
</html>

autor.java
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.context.FacesContext;

import br.com.caelum.livraria.dao.DAO;
import br.com.caelum.livraria.modelo.Autor;
import br.com.caelum.livraria.util.RedirectView;

@ManagedBean
@ViewScoped
public class AutorBean {

    private Autor autor = new Autor();

    public Autor getAutor() {
        return autor;
    }

    /**Método responsável por alterar os dados dos autores na tela autor.xhtml
     * @return void
     * @param Autor autor */
    public void atualizar(Autor autor) {
        this.autor = autor;        
    }

    /**Método responsável por listar todos os registros na tela autor.xhtml
     * @return List<Livro>
     * @param Autor autor */
    public List<Autor> getAutores(){
        return new DAO<Autor>(Autor.class).listaTodos();
    }

    public RedirectView gravar() {
        System.out.println("Gravando autor " + this.autor.getNome());


        if(this.autor.getId() == null) {            
            new DAO<Autor>(Autor.class).adiciona(this.autor);
//            FacesContext.getCurrentInstance().addMessage("autor", new FacesMessage("O Autor foi criado com sucesso!"));
        }else{
            new DAO<Autor>(Autor.class).atualiza(this.autor);
//            FacesContext.getCurrentInstance().addMessage("autor", new FacesMessage("O Autor foi alterado com sucesso!"));
        }

        this.autor = new Autor();

        return new RedirectView("livro");
    }

    /**Método responsável por atualizar o autor selecionado na lista de autores na tela autor.xhtml
     * @return void
     * @param Autor autor */
    public void atualizarAutor(Autor autorSelecionado) {
        this.autor = autorSelecionado;        
    }

    /**Método responsável por remover um autor da lista de autores na tela autor.xhtml
     * @return void
     * @param Autor autor */
    public void removerAutor(Autor autor){
        new DAO<Autor>(Autor.class).remove(autor);
    }
}
1 resposta

Fala Ronaldo, tudo bem?

Sobe no github pra eu dar uma olhada, por favor.