Fórum Botão Filtrar+JSF2+Hibernate+MySQL #400179
02/05/2011
0
package Dao;
import Model.Livro;
import java.util.List;
public interface LivroDao {
public void save(Livro livro);
public Livro getLivro(long id);
public List<Livro> list();
public void remove(Livro livro);
public void update(Livro livro);
}
LivroDaoImp.java
package Dao;
import Model.Livro;
import Utils.HibernateUtil;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class LivroDaoImp implements LivroDao {
public void save(Livro livro) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.save(livro);
t.commit();
}
public Livro getLivro(long id) {
Session session = HibernateUtil.getSessionFactory().openSession();
return (Livro) session.load(Livro.class, id);
}
public List<Livro> list() {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
List lista = session.createQuery("from Livro").list();
t.commit();
return lista;
}
public void remove(Livro livro) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.delete(livro);
t.commit();
}
public void update(Livro livro) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction t = session.beginTransaction();
session.update(livro);
t.commit();
}
}
package Controller;
import Dao.LivroDao;
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";
}
public String limpar() {
Livro livroParaUpdate = new Livro();
if (getLivro() != null) {
livroParaUpdate.setId(getLivro().getId());
}
setLivro(livroParaUpdate);
return "gerenciarLivro";
}
}
<!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="Filtrar" actionListener="#{livroController.listarLivros}" ajax="false" />
<p:commandButton value="Limpar" actionListener="#{livroController.limpar}" ajax="false" />
</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
03/05/2011
Robson Teixeira
pelo que vi acho que tenho ideia do que tem errado o seu botão filtrar ele tem que atualizar a tabela abaixo do form???
se for sugiro o uso de AJAX e o primefaces que está usando tem suporte e remova o atributo actionListener do botão filtrar e use com ajax assim.
<p:commandButton value="Filtrar" process="@this" update="livro "/>
com relação a remoção do actionlistener e que ele é normalmente pelo que sei usando em métodos set e não em get.
e sempre vale a pena da uma olhada no showcase do primefaces para tirar duvidas sobre os componentes disponiveis.
qualquer coisa é so chamar.
att
robson Passarella
Gostei + 0
03/05/2011
Davi Costa
Att Davi
Gostei + 0
03/05/2011
Renato Vieira
Gostei + 0
03/05/2011
Davi Costa
qualquer dúvida mais pontual é só avisar.
Att Davi
Gostei + 0
03/05/2011
Renato Vieira
<p:column filterBy="#{livro.titulo}" headerText="Título">
<f:facet name="header">
<h:outputText value="Título" />
</f:facet>
<h:outputText value="#{livro.titulo}" />
</p:column>
Gostei + 0
03/05/2011
Robson Teixeira
e o datatable do primefaces tem o selection para selecionar o objeto
<p:dataTable var="car" value="#{tableBean.carsSmall}" selection="#{tableBean.selectedCar}" selectionMode="single">
e na managedBean vc cria 1 atributo como no exemplo do Tipo car
private Car selectedCar;
com os respectivos getters e setters
segue link no showcase do primefaces.
http://www.primefaces.org/showcase/ui/datatableRowSelectionSingle.jsf
qualquer coisa e so chamar.
att
robson passarella
Gostei + 0
03/05/2011
Renato Vieira
var="livro" emptyMessage="Nenhum Registro Encontrado..."
selection="#{livroController.livro}" selectionMode="single"> [/CODE/
Qundo clica não preenche o Formulário. Provavelmente falta mais alguma ação. No Aguado. Obrigado
Gostei + 0
03/05/2011
Renato Vieira
<p:dataTable value="#{livroController.listarLivros}"
var="livro" emptyMessage="Nenhum Registro Encontrado..."
selection="#{livroController.livro}" selectionMode="sngle">
<p:commandButton action="#{livroController.prepararAlterarLivro}" value="Selecionar" update="form"/>
public String prepararAlterarLivro(){
livro = (Livro)(listaLivros.getRowData());
return "gerenciarLivro";
}
Gostei + 0
03/05/2011
Robson Teixeira
att
robson passarella
Gostei + 0
04/05/2011
Renato Vieira
Gostei + 0
08/05/2011
Robson Teixeira
desculpe a demora mas ja ta ai o retorno
na sua classe LivroController no método prepararAlterarLivro veja a unica coisa que fiz abaixo
public String prepararAlterarLivro(){
// livro = (Livro)(listaLivros.getRowData());
return "gerenciarLivro";
}
acredito que seja isso pois os campos foram totalmente preenchidos.
teste tambem ok??
att
robson
Gostei + 0
10/05/2011
Dyego Carmo
Gostei + 0
12/05/2011
Renato Vieira
public String prepararAlterarLivro(){
// livro = (Livro)(listaLivros.getRowData());
return "gerenciarLivro";
}
Gostei + 0
13/05/2011
Robson Teixeira
Gostei + 0
16/05/2011
Renato Vieira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)