Fórum Botão Limpar + JSF2+PrimeFaces #400113
02/05/2011
0
import Dao.LivroDaoImp;
import Model.Livro;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel; @ManagedBean
@SessionScoped
public class LivroController { private Livro livro;
private DataModel listaLivros; public DataModel getListarLivros() {
List<Livro> lista = new LivroDaoImp().list();
listaLivros = new ListDataModel(lista);
return listaLivros;
} public Livro getLivro() {
return livro;
} public void setLivro(Livro livro) {
this.livro = livro;
} public String prepararAdicionarLivro(){
livro = new Livro();
return "gerenciarLivro";
} public String prepararAlterarLivro(){
livro = (Livro)(listaLivros.getRowData());
return "gerenciarLivro";
} public String excluirLivro(){ Livro livroTemp = (Livro)(listaLivros.getRowData());
LivroDao dao = new LivroDaoImp();
dao.remove(livroTemp);
return "gerenciarLivro"; } public String adicionarLivro(){ LivroDao dao = new LivroDaoImp();
dao.save(livro);
return "gerenciarLivro";
} public String alterarLivro(){ LivroDao dao = new LivroDaoImp();
dao.update(livro);
return "gerenciarLivro"; }
} gerenciarLivro.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:p="http://primefaces.prime.com.tr/ui">
<h:head>
<link href="css/theme.css" rel="stylesheet" type="text/css" /> </h:head>
<h:body>
<h:form id="form">
<p:panel header="Cadastro de Livros">
<h:messages errorClass="error"/>
<h:panelGrid columns="2" id="painel"> <h:outputText value="Titulo: *" />
<p:inputText required="true" requiredMessage="Campo [Título] Obrigatório" value="#{livroController.livro.titulo}"/> <h:outputText value="Autor: " />
<p:inputText value="#{livroController.livro.autor}"/> <h:outputText value="Páginas: " />
<p:inputText value="#{livroController.livro.paginas}"/> <h:outputText value="Editora: " />
<p:inputText value="#{livroController.livro.editora}"/> <h:outputText value="ISBN: " />
<p:inputText value="#{livroController.livro.isbn}"/> <h:outputText value="Avaliação: " />
<h:selectOneMenu value="#{livroController.livro.avaliacao}">
<f:selectItem itemLabel="1" itemValue="1"/>
<f:selectItem itemLabel="2" itemValue="2"/>
<f:selectItem itemLabel="3" itemValue="3"/>
<f:selectItem itemLabel="4" itemValue="4"/>
<f:selectItem itemLabel="5" itemValue="5"/>
</h:selectOneMenu>
</h:panelGrid>
<p:commandButton value="Gravar" actionListener="#{livroController.adicionarLivro}" ajax="false" />
<p:commandButton value="Alterar" actionListener="#{livroController.alterarLivro}" ajax="false" />
<p:commandButton value="Limpar" type="reset" />
</p:panel>
<br/>
<br/>
</h:form>
<h:form>
<p:outputPanel id="livro">
<p:dataTable value="#{livroController.listarLivros}" var="livro"> <p:column>
<f:facet name="header">
<h:outputText value="Título" />
</f:facet>
<h:outputText value="#{livro.titulo}" />
</p:column> <p:column>
<f:facet name="header">
<h:outputText value="Autor" />
</f:facet>
<h:outputText value="#{livro.autor}" />
</p:column> <p:column>
<f:facet name="header">
<h:outputText value="Operações" />
</f:facet>
<h:commandButton action="#{livroController.prepararAlterarLivro}" value="Selecionar"/>
<h:commandButton action="#{livroController.excluirLivro}" value="Excluir"/>
</p:column>
</p:dataTable>
</p:outputPanel>
</h:form> </h:body>
</html>
Renato Vieira
Curtir tópico
+ 0Posts
02/05/2011
Anthony Accioly
public String limpar() { // cria um livro novo sem nada preenchido Livro livroParaUpdate = new Livro(); // se havia um id na sessão, copia para o novo livro // assim deve funcionar tanto para adicao quanto update if (getLivro() != null) { livroParaUpdate.setId(getLivro().getId()); } // substitui o livro antigo na sessão com tudo preenchido pelo livro novo em branco setLivro(livroParaUpdate);
return "gerenciarLivro";}Eis um post jurássico (2006) com alguém tendo que lidar com o mesmo problema: http://www.coderanch.com/t/212303/JSF/java/Reset-button
E outro em português de (2007): http://www.guj.com.br/java/67798-limpar-dados-do-formulario-com-o-jsf
O problema aqui é que o botão de reset (HTML) não limpa a form de fato, ele apenas reseta o formulário para o status inicial, antes do usuário digitar alguma coisa. Como seus dados já vem preenchidos, ele está retornando ao status anterior preenchido. Pode fazer um teste: troque um campo qualquer e clique em reset que o botão voltará para o status de preenchimento anterior.
Abraços,
Gostei + 0
02/05/2011
Renato Vieira
Tens algum link com material complementar de CRUD em JSF2.0+Hibernate e PrimeFaces?
Atualmente utilizo JavaBeans+JSP+JavaSCript etcc mais ou menos assim:
Página JSP:
.....
Ou Seja, um monte de código JAVA dentro do JSP. Funciona perfeitamente todas as telas, porém, é muito lixo. Queria aos poucos convertendo as telas. Estou com algumas dificuldades pois nao estou acostumado com Framework. Podes auxiliar ? Depois que funcionar a primeira tela e eu entender certinho, o restante é baba.
Abraços
Renato
Gostei + 0
02/05/2011
Anthony Accioly
Eu não tenho experiência com o PrimeFaces, mas acredito que a maioria das suas dificuldades tenham a ver com JSF puro e o Pattern MVC.O padrão "correto" para o que você está procurando fazer é realmente sumir com todos os Scriptlets.
Esse código todo deveria estar contido nos Controllers / camada de negócios.
A view deve ser algo meio burro, no máximo com alguma lógica basicona do tipo "rendered=expressão EL".
Bom, eu estudei um JSF jurássico sem Facelets. Na época, gostei muito do livro JSF In Action: http://www.manning.com/mann/. Mas muita coisa mudou com o Facelets + JSF 2 + Java EE 6.
Fora isso, gosto bastante do tutorial oficial da Sun (erm.. Oracle): http://download.oracle.com/javaee/6/tutorial/doc/bnadp.htmlNa parte mais aplicada, gosto muito dos tutoriais do Netbeans: http://netbeans.org/kb/trails/java-ee.html (mesmo que você use outro IDE, vale a pena).
Abraços,
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)