Por algum motivo o nome do autor não aparece no inputText quando tento alterá-lo.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<ui:composition template="_template.xhtml">
<ui:define name="titulo">Novo autor</ui:define>
<ui:define name="conteudo">
<h:form id="formAutor">
<h:messages></h: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="É necessário preencher o campo autor"
validatorMessage="Mínimo de 3 caracteres e máximo 50">
<f:validateLength minimum="3" maximum="50" />
</h:inputText>
<h:commandButton value="Gravar" action="#{autorBean.gravar}" />
</h:panelGrid>
</fieldset>
</h:form>
<h:form>
<fieldset>
<legend>Autores</legend>
<h:dataTable value="#{autorBean.lista()}" var="autor">
<h:column>
<f:facet name="header">Nome</f:facet>
<h:outputText value="#{autor.nome}" />
</h:column>
<h:column>
<f:facet name="remove">Remover</f:facet>
<h:commandLink value="remove"
action="#{autorBean.removeAutor(autor)}" />
</h:column>
<h:column>
<f:facet name="header">Atualizar</f:facet>
<h:commandLink value="atualiza" action="autorBean.carregar(autor)">
</h:commandLink>
</h:column>
</h:dataTable>
</fieldset>
</h:form>
</ui:define>
<ui:define name="texto"></ui:define>
</ui:composition>
</html>
@ManagedBean
@ViewScoped
public class AutorBean {
private Autor autor = new Autor();
public Autor getAutor() {
return autor;
}
public String gravar() {
System.out.println("Gravando autor " + this.autor.getNome());
if (this.autor.getId() == null) {
new DAO<Autor>(Autor.class).adiciona(this.autor);
return "livro?faces-redirect=true";
} else {
new DAO<Autor>(Autor.class).atualiza(this.autor);
new FacesMessage("Autor foi atualizado!");
}
return "livro?faces-redirect=true";
}
public List<Autor> lista() {
return new DAO<Autor>(Autor.class).listaTodos();
}
public void removeAutor(Autor autor) {
new DAO<Autor>(Autor.class).remove(autor);
}
public void carregar(Autor autor) {
this.autor = autor;
}
}