Boa noite galera,
Estou com um problema no meu componente
Tenho um CRUD simples, e após eu inserir ou alterar algum registro o filtro da tabela fica desativado, acredito ter algum problema com o meu update ao inserir ou alterar os dados.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.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.org/ui">
<p:fieldset legend="Categorias cadastradas">
<h:form prependId="false">
<p:commandButton actionListener="#{beanCategoria.prepararNovo}"
value="Nova categoria!" oncomplete="dialogCadCat.show()"
update=":centro" />
<p:dataTable var="cat" value="#{beanCategoria.listarCategorias}"
id="listaCategorias" rowKey="#{cat.id}"
filteredValue="#{beanCategoria.filteredCategorias}">
<f:facet name="header">
Lista de Categorias
</f:facet>
<p:column headerText="Cód." id="id" sortBy="#{cat.id}"
filterBy="#{cat.id}">
<h:outputText value="#{cat.id}" />
</p:column>
<p:column headerText="Descrição" id="descricao"
sortBy="#{cat.descricao}" filterBy="#{cat.descricao}">
<h:outputText value="#{cat.descricao}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Alterar" />
</f:facet>
<p:commandButton actionListener="#{beanCategoria.prepararAlterar}"
value="Alterar" oncomplete="dialogCadCat.show()" update=":centro" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>
<p:commandButton action="#{beanCategoria.excluir}" value="Excluir"
update=":centro" />
</p:column>
</p:dataTable>
</h:form>
</p:fieldset>
<p:dialog header="Cadastro de Categorias" widgetVar="dialogCadCat"
resizable="false" modal="true" showEffect="fade" hideEffect="fade">
<h:form if="frm">
<h:panelGrid id="infosCat" columns="2" style="margin-bottom:10px">
<h:outputLabel for="id" value="Cód.:" />
<h:outputLabel id="id" value="#{beanCategoria.categoria.id}" />
<h:outputLabel for="descricao" value="Descrição:" />
<h:inputText id="descricao"
value="#{beanCategoria.categoria.descricao}" />
<p:commandButton disable="#{!beanCategoria.novo}"
oncomplete="dialogCadCat.hide();"
actionListener="#{beanCategoria.adicionar}" value="Inserir"
update=":centro" />
<p:commandButton disable="#{!beanCategoria.edit}"
oncomplete="dialogCadCat.hide();"
actionListener="#{beanCategoria.alterar}" value="Alterar"
update=":centro" />
</h:panelGrid>
</h:form>
</p:dialog>
</html>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.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.org/ui">
<p:fieldset legend="Categorias cadastradas">
<h:form prependId="false">
<p:commandButton actionListener="#{beanCategoria.prepararNovo}"
value="Nova categoria!" oncomplete="dialogCadCat.show()"
update=":centro" />
<p:dataTable var="cat" value="#{beanCategoria.listarCategorias}"
id="listaCategorias" rowKey="#{cat.id}"
filteredValue="#{beanCategoria.filteredCategorias}">
<f:facet name="header">
Lista de Categorias
</f:facet>
<p:column headerText="Cód." id="id" sortBy="#{cat.id}"
filterBy="#{cat.id}">
<h:outputText value="#{cat.id}" />
</p:column>
<p:column headerText="Descrição" id="descricao"
sortBy="#{cat.descricao}" filterBy="#{cat.descricao}">
<h:outputText value="#{cat.descricao}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Alterar" />
</f:facet>
<p:commandButton actionListener="#{beanCategoria.prepararAlterar}"
value="Alterar" oncomplete="dialogCadCat.show()" update=":centro" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>
<p:commandButton action="#{beanCategoria.excluir}" value="Excluir"
update=":centro" />
</p:column>
</p:dataTable>
</h:form>
</p:fieldset>
<p:dialog header="Cadastro de Categorias" widgetVar="dialogCadCat"
resizable="false" modal="true" showEffect="fade" hideEffect="fade">
<h:form if="frm">
<h:panelGrid id="infosCat" columns="2" style="margin-bottom:10px">
<h:outputLabel for="id" value="Cód.:" />
<h:outputLabel id="id" value="#{beanCategoria.categoria.id}" />
<h:outputLabel for="descricao" value="Descrição:" />
<h:inputText id="descricao"
value="#{beanCategoria.categoria.descricao}" />
<p:commandButton disable="#{!beanCategoria.novo}"
oncomplete="dialogCadCat.hide();"
actionListener="#{beanCategoria.adicionar}" value="Inserir"
update=":centro" />
<p:commandButton disable="#{!beanCategoria.edit}"
oncomplete="dialogCadCat.hide();"
actionListener="#{beanCategoria.alterar}" value="Alterar"
update=":centro" />
</h:panelGrid>
</h:form>
</p:dialog>
</html>
package bean;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import model.Categoria;
import dao.CategoriaDAO;
public class BeanCategoria {
private Categoria categoria;
private List<Categoria> categorias, filteredCategorias;
private DataModel listaCategorias;
private boolean edit,novo;
public BeanCategoria() {
this.categoria = new Categoria();
this.categorias = new ArrayList<Categoria>();
this.filteredCategorias = new ArrayList<Categoria>();
novo();
atualizaCategorias();
}
public void atualizaCategorias (){
this.categorias.clear();
this.categorias = new CategoriaDAO().getAllCategorias();
}
public void alterar(){
try {
new CategoriaDAO().alterar(categoria);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void excluir(){
try {
new CategoriaDAO().excluir((Categoria)(listaCategorias.getRowData()));
atualizaCategorias();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void adicionar(){
try {
new CategoriaDAO().inserir(categoria);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
atualizaCategorias();
categoria = new Categoria();
}
public void prepararNovo(){
this.categoria = new Categoria();
novo();
}
public void prepararAlterar(ActionEvent actionEvent){
this.categoria = (Categoria)(listaCategorias.getRowData());
edit();
}
public DataModel getListarCategorias() {
List<Categoria> lista = categorias;
listaCategorias = new ListDataModel(lista);
return listaCategorias;
}
public void novo(){
setNovo(true);
setEdit(false);
}
public void edit(){
setNovo(false);
setEdit(true);
}
//getters and setters
public boolean isEdit() {
return edit;
}
public void setEdit(boolean edit) {
this.edit = edit;
}
public boolean isNovo() {
return novo;
}
public void setNovo(boolean novo) {
this.novo = novo;
}
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
public List<Categoria> getFilteredCategorias() {
return filteredCategorias;
}
public void setFilteredCategorias(List<Categoria> filteredCategorias) {
this.filteredCategorias = filteredCategorias;
}
public List<Categoria> getCategorias() {
return categorias;
}
public void setCategorias(List<Categoria> categorias) {
this.categorias = categorias;
}
public BeanCategoria(Categoria categoria, List<Categoria> categorias) {
super();
this.categoria = categoria;
this.categorias = categorias;
}
}
Toda ajuda é bem vinda, agradeço desde já a atenção dispensada.
