pessoal não consigo entender pq quando eu uso o filtro com prime faces acontece isso ?
<?xml version="1.0" encoding="UTF-8" ?>
Hagape
<f:facet name="footer">
<p:commandButton value="Novo"
actionListener="#{produtoBean.refresh}"
oncomplete="PF('dialogo').show();"
update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem">
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
</f:facet>
<p:column headerText="Nome" filterBy="#{categoria.txt_nome}"
sortBy="#{categoria.txt_nome}">
<h:outputText value="#{categoria.txt_nome}" />
</p:column>
<p:column headerText="Tipo de Negócio"
sortBy="#{categoria.tipo_negocio.txt_tipo}"
filterBy="#{categoria.tipo_negocio.txt_tipo}">
<h:outputText value="#{categoria.tipo_negocio.txt_tipo}" />
</p:column>
<p:column headerText="Categoria Pai"
filterBy="#{categoria.id_categoria_pai}">
<h:outputText value="#{categoria.id_categoria_pai}" />
</p:column>
<p:column headerText="Situação" filterBy="#{categoria.situacao}"
sortBy="#{categoria.situacao}">
<h:outputText value="#{categoria.situacao}" />
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-pencil"
oncomplete="PF('dialogo').show();"
actionListener="#{categoriaProdutoBean.edita}"
update=":mensagem :formCadastro:painelCadastro">
<f:attribute name="categoriaSelecionada" value="#{categoria}" />
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
<p:commandButton icon="ui-icon-trash"
actionListener="#{categoriaProdutoBean.excluir}"
update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem">
<p:confirm header="Confirmação"
message="Voce deseja exluir essa 'Categoria'?"
icon="ui-icon-alert" />
<f:attribute name="categoriaSelecionada" value="#{categoria}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:confirmDialog global="true">
<p:commandButton value="Sim" type="button"
styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="Não" type="button"
styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:panel>
</h:form>
<p:dialog header="Cadastro de Categorias" widgetVar="dialogo"
draggable="false" resizable="false" modal="true" closable="false">
<h:form id="formCadastro">
<h:panelGrid id="painelCadastro" columns="2">
<p:outputLabel for="nome" value="Nome:" />
<p:inputText id="nome"
value="#{categoriaProdutoBean.categoria.txt_nome}" maxlength="100"
size="25" required="true"
requiredMessage="O Campo 'Nome' é obrigatório!" />
<p:outputLabel for="tipoNegocio" value="Tipo Negócio:" />
<p:selectOneMenu id="tipoNegocio" filter="true"
value="#{categoriaProdutoBean.categoria.tipo_negocio}"
converter="omnifaces.SelectItemsConverter" required="true"
requiredMessage="Campo 'Tipo Negócio' obrigatório!">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione um 'Tipo Negócio'"
itemValue="#{categoriaProdutoBean.negocios}" />
<f:selectItems value="#{categoriaProdutoBean.negocios}"
var="negocio"
itemLabel="#{negocio.id_tipo_negocio} - #{negocio.txt_tipo}"
itemValue="#{negocio}" />
</p:selectOneMenu>
<p:outputLabel for="categoriaPai" value="Categoria Pai:" />
<p:selectOneMenu id="categoriaPai" filter="true"
value="#{categoriaProdutoBean.categoria.id_categoria_pai}"
converter="omnifaces.SelectItemsConverter">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione a 'Categoria Pai'"
itemValue="#{categoriaProdutoBean.categorias}" />
<f:selectItems value="#{categoriaProdutoBean.categorias}"
var="categoriaP"
itemLabel="#{categoriaP.id_categoria} - #{categoriaP.txt_nome}"
itemValue="#{categoriaP.id_categoria}" />
</p:selectOneMenu>
<p:outputLabel for="ativo" value="Ativa:" />
<p:selectOneRadio id="ativo"
value="#{categoriaProdutoBean.categoria.bool_ativo}">
<f:selectItem itemLabel="Ativa" itemValue="1" />
<f:selectItem itemLabel="Inativa" itemValue="0" />
</p:selectOneRadio>
<p:outputLabel value="Observação:" />
<p:inputTextarea
value="#{categoriaProdutoBean.categoria.txt_observacao}" />
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton value="Salvar"
actionListener="#{categoriaProdutoBean.salvar}"
update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem" />
<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide()" />
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
Você poderia mostrar com sua lista é populada, por favor?
aew brow Segue a pagina xhtml:
<?xml version="1.0" encoding="UTF-8" ?>
Hagape
<f:facet name="footer">
<p:commandButton value="Novo"
actionListener="#{produtoBean.refresh}"
oncomplete="PF('dialogo').show();"
update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem">
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
</f:facet>
<p:column headerText="Nome" filterBy="#{categoria.txt_nome}"
sortBy="#{categoria.txt_nome}">
<h:outputText value="#{categoria.txt_nome}" />
</p:column>
<p:column headerText="Tipo de Negócio"
sortBy="#{categoria.tipo_negocio.txt_tipo}"
filterBy="#{categoria.tipo_negocio.txt_tipo}">
<h:outputText value="#{categoria.tipo_negocio.txt_tipo}" />
</p:column>
<p:column headerText="Categoria Pai"
filterBy="#{categoria.id_categoria_pai}">
<h:outputText value="#{categoria.id_categoria_pai}" />
</p:column>
<p:column headerText="Situação" filterBy="#{categoria.situacao}"
sortBy="#{categoria.situacao}">
<h:outputText value="#{categoria.situacao}" />
</p:column>
<p:column headerText="Opções">
<p:commandButton icon="ui-icon-pencil"
oncomplete="PF('dialogo').show();"
actionListener="#{categoriaProdutoBean.edita}"
update=":mensagem :formCadastro:painelCadastro">
<f:attribute name="categoriaSelecionada" value="#{categoria}" />
<f:actionListener
type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
</p:commandButton>
<p:commandButton icon="ui-icon-trash"
actionListener="#{categoriaProdutoBean.excluir}"
update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem">
<p:confirm header="Confirmação"
message="Voce deseja exluir essa 'Categoria'?"
icon="ui-icon-alert" />
<f:attribute name="categoriaSelecionada" value="#{categoria}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:confirmDialog global="true">
<p:commandButton value="Sim" type="button"
styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="Não" type="button"
styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</p:panel>
</h:form>
<p:dialog header="Cadastro de Categorias" widgetVar="dialogo"
draggable="false" resizable="false" modal="true" closable="false">
<h:form id="formCadastro">
<h:panelGrid id="painelCadastro" columns="2">
<p:outputLabel for="nome" value="Nome:" />
<p:inputText id="nome"
value="#{categoriaProdutoBean.categoria.txt_nome}" maxlength="100"
size="25" required="true"
requiredMessage="O Campo 'Nome' é obrigatório!" />
<p:outputLabel for="tipoNegocio" value="Tipo Negócio:" />
<p:selectOneMenu id="tipoNegocio" filter="true"
value="#{categoriaProdutoBean.categoria.tipo_negocio}"
converter="omnifaces.SelectItemsConverter" required="true"
requiredMessage="Campo 'Tipo Negócio' obrigatório!">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione um 'Tipo Negócio'"
itemValue="#{categoriaProdutoBean.negocios}" />
<f:selectItems value="#{categoriaProdutoBean.negocios}"
var="negocio"
itemLabel="#{negocio.id_tipo_negocio} - #{negocio.txt_tipo}"
itemValue="#{negocio}" />
</p:selectOneMenu>
<p:outputLabel for="categoriaPai" value="Categoria Pai:" />
<p:selectOneMenu id="categoriaPai" filter="true"
value="#{categoriaProdutoBean.categoria.id_categoria_pai}"
converter="omnifaces.SelectItemsConverter">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione a 'Categoria Pai'"
itemValue="#{categoriaProdutoBean.categorias}" />
<f:selectItems value="#{categoriaProdutoBean.categorias}"
var="categoriaP"
itemLabel="#{categoriaP.id_categoria} - #{categoriaP.txt_nome}"
itemValue="#{categoriaP.id_categoria}" />
</p:selectOneMenu>
<p:outputLabel for="ativo" value="Ativa:" />
<p:selectOneRadio id="ativo"
value="#{categoriaProdutoBean.categoria.bool_ativo}">
<f:selectItem itemLabel="Ativa" itemValue="1" />
<f:selectItem itemLabel="Inativa" itemValue="0" />
</p:selectOneRadio>
<p:outputLabel value="Observação:" />
<p:inputTextarea
value="#{categoriaProdutoBean.categoria.txt_observacao}" />
</h:panelGrid>
<h:panelGrid columns="2">
<p:commandButton value="Salvar"
actionListener="#{categoriaProdutoBean.salvar}"
update=":mensagem :formCadastro:painelCadastro :formListagem:dataTableListagem" />
<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide()" />
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
Segue a classe Bean:
package hagape.bean;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.omnifaces.util.Messages;
import hagape.dao.CategoriaProdutoDAO;
import hagape.dao.TipoNegocioDAO;
import hagape.domain.tb_categoria_produto;
import hagape.domain.tb_tipo_negocio;
@SuppressWarnings(“serial”)
@ViewScoped
@ManagedBean
public class CategoriaProdutoBean implements Serializable {
private List<tb_categoria_produto> categorias;
private List<tb_categoria_produto> categoriasP;
private tb_categoria_produto categoria;
private List<tb_tipo_negocio> negocios;
public List<tb_categoria_produto> getCategorias() {
return categorias;
}
public void setCategorias(List<tb_categoria_produto> categorias) {
this.categorias = categorias;
}
public tb_categoria_produto getCategoria() {
return categoria;
}
public void setCategoria(tb_categoria_produto categoria) {
this.categoria = categoria;
}
public List<tb_tipo_negocio> getNegocios() {
return negocios;
}
public void setNegocios(List<tb_tipo_negocio> negocios) {
this.negocios = negocios;
}
public List<tb_categoria_produto> getCategoriasP() {
return categoriasP;
}
public void setCategoriasP(List<tb_categoria_produto> categoriasP) {
this.categoriasP = categoriasP;
}
@PostConstruct
public void listar() {
try {
CategoriaProdutoDAO categoriaDAO = new CategoriaProdutoDAO();
categorias = categoriaDAO.listar();
categoriasP = categorias;
TipoNegocioDAO tipoNegocioDAO = new TipoNegocioDAO();
negocios = tipoNegocioDAO.listar();
categoria = new tb_categoria_produto();
} catch (RuntimeException e) {
e.printStackTrace();
Messages.addGlobalError("Erro ao tentar carregar 'Lista'!");
}
}
/*
public void carregarF(){
CategoriaProdutoDAO categoriaDAO = new CategoriaProdutoDAO();
categoriasF = categoriaDAO.buscarFilho(categoria.getId_categoria());
Messages.addGlobalError("Erro ao tentar carregar 'Listas Atualizadas'!");
}
*/
public void refresh() {
try {
CategoriaProdutoDAO categoriaDAO = new CategoriaProdutoDAO();
categorias = categoriaDAO.listar();
categoriasP = categorias;
TipoNegocioDAO tipoNegocioDAO = new TipoNegocioDAO();
negocios = tipoNegocioDAO.listar();
categoria = new tb_categoria_produto();
} catch (RuntimeException e) {
e.printStackTrace();
Messages.addGlobalError("Erro ao tentar carregar 'Lista'!");
}
}
public void excluir(ActionEvent evento) {
try {
categoria = (tb_categoria_produto) evento.getComponent().getAttributes().get("categoriaSelecionada");
CategoriaProdutoDAO categoriaDAO = new CategoriaProdutoDAO();
categoriaDAO.excluir(categoria);
Messages.addGlobalInfo("Categoria: '" + categoria.getTxt_nome() + "' excluida com sucesso!");
refresh();
} catch (RuntimeException e) {
Messages.addGlobalError("Erro ao tentar 'Excluir'");
e.printStackTrace();
}
}
public void edita(ActionEvent evento) {
try {
TipoNegocioDAO tipoNegocioDAO = new TipoNegocioDAO();
negocios = tipoNegocioDAO.listar();
categoria = (tb_categoria_produto) evento.getComponent().getAttributes().get("categoriaSelecionada");
CategoriaProdutoDAO categoriaDAO = new CategoriaProdutoDAO();
List<tb_categoria_produto> categorias = (List<tb_categoria_produto>) categoriaDAO.buscarFilho(categoria.getId_categoria());
for (tb_categoria_produto categoriaFilha : categorias) {
System.out.println("id categoria filha" + categoriaFilha.getId_categoria());
}
categorias = categoriaDAO.listar();
categoriasP = categorias;
categoria = (tb_categoria_produto) evento.getComponent().getAttributes().get("categoriaSelecionada");
Messages.addGlobalInfo("Categoria: '" + categoria.getTxt_nome() + "' Selecionada!");
} catch (RuntimeException e) {
Messages.addGlobalError("Erro ao tentar 'Selecionar'");
e.printStackTrace();
}
}
public void salvar() {
Date date = new Date();
categoria.setDt_cadastro(date);
if (categoria.getId_categoria_pai() == null) {
categoria.setId_categoria_pai(0L);
}
categoria.setTxt_tipo(String.valueOf(categoria.getTipo_negocio().getId_tipo_negocio()));
try {
CategoriaProdutoDAO categoriaDAO = new CategoriaProdutoDAO();
categoriaDAO.merge(categoria);
Messages.addGlobalInfo("Categoria: '" + categoria.getTxt_nome() + "' salva com sucesso!");
refresh();
// throw new RuntimeException("erro forçado!");
} catch (RuntimeException e) {
Messages.addGlobalError("Erro ao tentar 'Salvar'");
e.printStackTrace();
}
}
}