Erro ao usar o filterBy do primefaces

22 respostas
W

Boa tarde pessoal, estou desenvolvendo uma aplicação com primefaces 3.2, mais estou tendo problemas na hora de usar o filterBy em um p:dataTable. Ou seja, ao lista a eu consigo alterar e excluir normalmente, mais a parti do momento em que eu faço uma busca pelo filterBy e tento alterar, ele só me retorna o registro que esta na primeira linha do dataTable:

Segue o código:

listEscolas.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<p:growl id="growl" showDetail="true" life="300"/>     
            <p:dialog id="dlgescola" header="Alterar Escola" widgetVar="altEscola" width="450">
                <h:form>
                    <h:panelGrid columns="3">

                        <h:outputLabel for="codigo_inep" value="Código Inep: *" />  
                        <p:inputText id="codigo_inep" value="#{escolaController.escola.codigo_inep}" required="true" label="Código Inep">  
                            <f:validateLength minimum="2" />  
                            <p:ajax update="msgCodigo_inep" event="keyup" />
                        </p:inputText>  
                        <p:message for="codigo_inep" id="msgCodigo_inep" display="icon"/>

                        <h:outputLabel for="nome" value="Nome: *" />  
                        <p:inputText id="nome" value="#{escolaController.escola.nome}" required="true" label="Nome">  
                            <f:validateLength minimum="2" />  
                            <p:ajax update="msgNome" event="keyup" />
                        </p:inputText>  
                        <p:message for="nome" id="msgNome" display="icon"/>

                        <h:outputLabel for="cnpj" value="CNPJ: *" />  
                        <p:inputMask id="cnpj" value="#{escolaController.escola.cnpj}" mask="99.999.999/9999-99" required="true" label="CNPJ">  
                            <f:validateLength minimum="2" />  
                            <p:ajax update="msgCnpj" event="keyup" />
                        </p:inputMask>  
                        <p:message for="cnpj" id="msgCnpj" display="icon"/>

                        <h:outputLabel for="telefone" value="Telefone: *" />  
                        <p:inputMask id="telefone" value="#{escolaController.escola.telefone}" mask="([telefone removido]" required="true" label="Telefone">  
                            <f:validateLength minimum="2" />  
                            <p:ajax update="msgTelefone" event="keyup" />
                        </p:inputMask>  
                        <p:message for="telefone" id="msgTelefone" display="icon"/>

                        <h:outputLabel for="rua" value="Rua: *" />  
                        <p:inputText id="rua" value="#{escolaController.escola.rua}" required="true" label="Rua">  
                            <f:validateLength minimum="2" />  
                            <p:ajax update="msgRua" event="keyup" />
                        </p:inputText>  
                        <p:message for="rua" id="msgRua" display="icon"/>

                        <h:outputLabel for="numero" value="Número: " />  
                        <p:inputText id="numero" value="#{escolaController.escola.numero}" label="Número">
                            <f:validateLength minimum="0" />  
                        </p:inputText>
                        <p:message for="numero" display="icon"/>

                        <h:outputLabel for="bairro" value="Bairro: *" />  
                        <p:inputText id="bairro" value="#{escolaController.escola.bairro}" required="true" label="Bairro">  
                            <f:validateLength minimum="2" />  
                            <p:ajax update="msgBairro" event="keyup" />
                        </p:inputText>  
                        <p:message for="bairro" id="msgBairro" display="icon"/>

                        <h:outputLabel for="cep" value="CEP: *" />  
                        <p:inputMask id="cep" value="#{escolaController.escola.cep}" mask="99.999-999" required="true" label="CEP">  
                            <f:validateLength minimum="2" />  
                            <p:ajax update="msgCep" event="keyup" />
                        </p:inputMask>  
                        <p:message for="cep" id="msgCep" display="icon"/>

                        <h:outputLabel for="complemento" value="Complemento: " />  
                        <p:inputText id="complemento" value="#{escolaController.escola.complemento}" label="Complemento">
                            <f:validateLength minimum="0" />  
                        </p:inputText>
                        <p:message for="complemento" display="icon"/>

                        <h:outputLabel for="cidade" value="Cidade: *" />  
                        <p:inputText id="cidade" value="#{escolaController.escola.cidade}" required="true" label="Cidade">  
                            <f:validateLength minimum="2" />  
                            <p:ajax update="msgCidade" event="keyup" />
                        </p:inputText>  
                        <p:message for="cidade" id="msgCidade" display="icon"/>

                        <h:outputLabel for="user" value="Usuário: *" />
                        <p:selectOneMenu id="user" value="#{escolaController.escola.usuario.id}" required="true" label="Usuário">
                            <f:selectItems value="#{escolaController.usuarios}"/>
                            <f:validateLength minimum="1" />  
                            <p:ajax update="msgUser" event="keyup" />
                        </p:selectOneMenu>
                        <p:message for="user" id="msgUser" display="icon"/>

                    </h:panelGrid>
                    <p:commandButton id="btAlterar" value="Alterar" update=":growl"  actionListener="#{escolaController.alterar}" oncomplete="handleLoginRequest(xhr, status, args)" ajax="false" immediate="false" />
                </h:form>
            </p:dialog>

            <!--Data Table Escolas -->
            <h:form id="form"> 
                
                    <h:outputLabel for="escola" value="Escola" />
                    <p:inputText size="50" id="nome" value="#{escolaController.escola.nome}" /> 
                    <p:commandButton value="Buscar" action="#{escolaController.produtosCat}" update="dataTable"  />

               
                <p:dataTable id="dataTable" var="escola" value="#{escolaController.todasEscolas}"  
                             paginator="true" rows="10"  
                             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                             rowsPerPageTemplate="5,10,15">  
                    <f:facet name="header">  
                        Escolas Cadastrados 
                    </f:facet>  

                    <p:column>  
                        <f:facet name="header">  
                            <h:outputText value="Código" />  
                        </f:facet>  
                        <h:outputText value="#{escola.id}" />  
                    </p:column>  

                    <p:column>  
                        <f:facet name="header">  
                            <h:outputText value="Código Inep" />  
                        </f:facet>  
                        <h:outputText value="#{escola.codigo_inep}" />  
                    </p:column>

                    <p:column filterStyle="max-width: 40px; min-width: 300px;" filterBy="#{escola.nome}">  
                        <f:facet name="header">  
                            <h:outputText value="Escola" />  
                        </f:facet>  
                        <h:outputText value="#{escola.nome}" />  
                    </p:column>

                    <p:column>  
                        <f:facet name="header">  
                            <h:outputText value="Usuário" />  
                        </f:facet>  
                        <h:outputText value="#{escola.usuario.username}" />  
                    </p:column>

                    <p:column>  
                        <f:facet name="header">  
                            <h:outputText value="Alterar" />  
                        </f:facet>
                        <div align="center">
                            <p:commandButton update=":dlgescola" action="#{escolaController.editar}"  oncomplete="altEscola.show()" image="ui-icon ui-icon-pencil" title="Alterar Escola">
                                <f:setPropertyActionListener target="#{escolaController.escola}" value="#{escola}" />
                            </p:commandButton>
                            
                            
                        </div>    
                    </p:column>

                    <p:column>  
                        <f:facet name="header">  
                            <h:outputText value="Excluir" />  
                        </f:facet>
                        <div align="center">
                            <p:commandButton oncomplete="confirmation.show()" image="ui-icon ui-icon-close" title="Excluir">  
                                <f:setPropertyActionListener value="#{escola}" target="#{escolaController.escolaParaEditarExcluir}" />  
                            </p:commandButton>
                        </div>
                    </p:column>
                </p:dataTable>  
            </h:form>
            <h:form>
                <!-- Caixa de dialogo para exclusão-->
                <p:confirmDialog message="Deseja realmente excluir esta Escola?" width="350" header="Confirmação" severity="alert" widgetVar="confirmation">  
                    <p:commandButton value="Sim" update=":form:dataTable" actionListener="#{escolaController.excluir}" oncomplete="confirmation.hide()"/>  
                    <p:commandButton value="Não" onclick="confirmation.hide()" type="button" />  
                </p:confirmDialog>
            </h:form>
        </ui:define>
    </ui:composition>
</h:body>

EscolaController

public class EscolaController {

private Escola escola = new Escola();
private DataModel model;
private Map<String, Object> usuarioList = null;
@Resource
private DaoGenerico<Escola, Integer> escolaDao;
@Resource
private DaoGenerico<Usuario, Integer> usuarioDao;

public EscolaController() {
    this.escola = new Escola();
    this.escola.setUsuario(new Usuario());
}

public Escola getEscola() {
    return escola;
}

public void setEscola(Escola escola) {
    this.escola = escola;
}

public DaoGenerico<Escola, Integer> getEscolaDao() {
    return escolaDao;
}

public void setEscolaDao(DaoGenerico<Escola, Integer> escolaDao) {
    this.escolaDao = escolaDao;
}

public DaoGenerico<Usuario, Integer> getUsuarioDao() {
    return usuarioDao;
}

public void setUsuarioDao(DaoGenerico<Usuario, Integer> usuarioDao) {
    this.usuarioDao = usuarioDao;
}

// preenche o combo com usuarios disponiveis
// no formulário de cadastro de Escola
public Map<String, Object> getUsuarios() {

    usuarioList = new LinkedHashMap<String, Object>();

    for (Iterator<?> iter = usuarioDao.todos().iterator(); iter.hasNext();) {
        Usuario u = (Usuario) iter.next();
        usuarioList.put(u.getUsername(), u.getId());// label,value
    }

    return usuarioList;
}

/**
 * Método chamado dentro do salvar para que seja possivel limpar a caixa de
 * dialog
 */
protected void novo() {
    escola = new Escola();
    this.escola.setUsuario(new Usuario());
}

public String cancelar() {
    novo();
    return "home.xhtml";
}

/**
 * Método que mostra todas as escolas
 *
 * @return -> DataTable de Escolas
 */
public DataModel getTodasEscolas() {
    return model = new ListDataModel(escolaDao.todos());
}

/**
 * Método resposavel por pegar a escola selecionada na tabela
 *
 * @return -> Escola para ser editada ou excluida
 */
public Escola getEscolaParaEditarExcluir() {
    escola = (Escola) model.getRowData();
    return escola;
}

/**
 * Método resposável por salvar
 *
 * @return -> uma nova escola
 */
public String salvar() {

    escolaDao.salvar(escola);
    FacesUtils.mensInfo("Escola " + escola.getNome() + " cadastrada com sucesso ");
    novo();
    return "formEscola.xhtml";

}

/**
 * Método resposável por alterar um usuário
 */
public void alterar(ActionEvent event) {
    RequestContext context = RequestContext.getCurrentInstance();
    boolean loggedIn = false;
    if (escola.getId() != null) {
        Usuario user = usuarioDao.pesquisarPorId(escola.getUsuario().getId());
        escola.setUsuario(user);
        escolaDao.atualizar(escola);
        loggedIn = true;
        FacesUtils.mensInfo("Escola " + escola.getNome() + " alterada com sucesso ");
    } else {
        loggedIn = false;
    }
    context.addCallbackParam("loggedIn", loggedIn);
}

public Escola editar() {
    setEscola(getEscolaParaEditarExcluir());
    return escola;
}

/**
 * Método resposável por excluir uma escola
 */
public String excluir() {
    escola = getEscolaParaEditarExcluir();
    escolaDao.excluir(escola);
    FacesUtils.mensInfo("Escola excluida com sucesso");
    return "home.xhtml";
}

}

e por fim o método dentro da Dao

@SuppressWarnings(unchecked)

public List todos() {

String queryS = SELECT obj FROM " + oClass.getSimpleName() + " obj;

Query query = getEntityManager().createQuery(queryS);

return query.getResultList();
}

Já tentei de tudo mais não estou conseguindo.

Bom noite pessoal, consegui revolver.

22 Respostas

V

Meu caro,

estou com o mesmo problema. Como você conseguiu resolver?

Abraços…

M

amigo formate seu codigo. tem exemplos no site do [primefaces voce seguiu[url]? http://www.primefaces.org/showcase-labs/ui/datatableFiltering.jsf

L

opa, boa tarde!!!

Estou com o mesmo problema aqui. Como você conseguiu resolver?

desde já, obrigado!!

E

Tem que usar o propertyActionListener.

<p:commandButton title="Alterar"onclick="dialogdados.show()" icon="ui-icon-pencil"> <f:setPropertyActionListener value="#{objeto}" target="#{ObjetoControle.objeto}" /> </p:commandButton>

L
ErickRAR:
Tem que usar o propertyActionListener.
<p:commandButton
					title="Alterar"onclick="dialogdados.show()"
					icon="ui-icon-pencil">
					  <f:setPropertyActionListener value="#{objeto}" target="#{ObjetoControle.objeto}" /> 
					</p:commandButton>

opa, erick....obrigado pela ajuda!

mas não funciona...o meu código está da seguinte forma:
<p:column sortBy = "#{id.fornecedor}" filterBy = "#{id.fornecedor}" id = "fornecedor">
							<f:facet name="header">Fornecedor</f:facet>
							#{id.fornecedor}
						</p:column>


         <p:column>
							<f:facet name="header">Editar</f:facet>	
							<h:commandLink title="Editar">
								<f:ajax execute="@this" render=":edicao"/>
								<h:graphicImage library="imagens" name="edit.png" style="border:0"/>
								<f:setPropertyActionListener target="#{contratoBean.contrato}" value="#{id}"/>
							</h:commandLink>
						</p:column>

não utilizo botões nesse código, só link mesmo...no link de editar tenho esse setPropertyAction, mas ao filtrar, dá o mesmo bug...não sei mais o que tentar!!

alguma outra sugestão?!!?

obrigado!!

Y

Estou com o mesmo problema aqui.

E

Acredito que seja por causa do ajax.O exemplo no primefaces está diferente, dê uma olhada…

Eu costumo utilizar um dialog para cadastrar/alterar, assim, quando clico no botao, ele abre o dialog.

Tente assim:

<p:column sortBy = "#{id.fornecedor}" filterBy = "#{id.fornecedor}" id = "fornecedor">  
    <f:facet name="header">Fornecedor</f:facet>  
    #{id.fornecedor}  
</p:column>  
   <p:column>  
    <f:facet name="header">Editar</f:facet>   
    <h:commandLink title="Editar" onclick="dialogdados.show()">  
        <h:graphicImage library="imagens" name="edit.png" style="border:0"/>  
        <f:setPropertyActionListener target="#{contratoBean.contrato}" value="#{id}"/>  
    </h:commandLink>  
</p:column>
L

Conseguiu resolver o problema?

Estava tendo o mesmo problema, só precisa utilizar o filteredValue dentro do seu datatable.

[]'s

W

estou com esse mesmo problema, alguem consegui o arrumar?

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="../template/template_colaborador.xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui">


    <ui:define name="content">
        <p:fieldset legend="Cadastro de Alunos">

            <h:form id="formAluno">
                <p:growl id="aviso" life="2000" redisplay="true"/>
  <p:fieldset>
                    <p:commandButton update=":cadastro" value="Novo"
                                     oncomplete="inserir.show()" action="#{alunoBean.limpar()}"/>
                </p:fieldset>
                <p:dataTable id="tabelaaluno" value="#{alunoBean.alunos}" 
                             var ="v"  paginator="true" paginatorPosition="bottom" rows="10" emptyMessage="Aluno não encontrado!">
                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Código" />
                        </f:facet>
                        <h:outputText value="#{v.id}" />
                    </p:column>
                    <p:column  filterMatchMode="contains"  filterStyle="width:350px" filterBy="#{v.nome}">
                        <f:facet name="header">

                            <h:outputText value="Nome"/>
                        </f:facet>
                        #{v.nome}
                        <p:commandLink update=":alunosd" oncomplete="alunod.show()" title="Detalhes da Aluno">  
                            <p:graphicImage alt="Detalhes" style="border:none" value="../resources/imagens/search.png"/>   
                            <f:setPropertyActionListener value="#{v}" target="#{alunoBean.aluno}"/>
                        </p:commandLink> 
                    </p:column>

                    <p:column>
                        <f:facet name="header">
                            <h:outputText value="Ações"/>
                        </f:facet>

                        <p:column>  


                           <!-- Botao Excluir -->
                           <p:commandButton icon="ui-icon-close" value="Excluir" title="Excluir" onclick="confirmation.show()" style="margin-left: 5px" >

                        <!-- Abaixo temos o setPropertyActionListener que é utilizado para pegar o objeto cli e setar no objeto cliente la no nosso bean, para posteriomente excluirmos-->

                        <f:setPropertyActionListener value="#{v}" target="#{alunoBean.aluno}" />

                    </p:commandButton>  
                            
                            <!-- Botao Excluir -->
                            


                        </p:column> 

                        <!-- -->
                        ||
                        <p:commandButton value="Alterar" action="#{alunoBean.alterar()}"  image="ui-icon ui-icon-pencil" oncomplete="inserir.show()"
                                         update=":cadastro">
                            <f:setPropertyActionListener value="#{v}" target="#{alunoBean.aluno}"/>
                        </p:commandButton>

                    </p:column>

                </p:dataTable>

              

            </h:form>
<!-- Inicio Form Confir -->
<h:form id="dlg">

            <p:confirmDialog message="Deseja realmente excluir este registro?" header="Aviso" severity="alert" widgetVar="confirmation">

                <!--caso seja sim chamo o metodo excluir, e fecho o modal com o oncomplete, tenho o process que estou dizendo para processar o form, e update para atualizar a tabela-->

                <p:commandButton id="btnSim" value="Sim" oncomplete="confirmation.hide();" actionListener="#{alunoBean.excluir}" process="@form" update=":formAluno" />

                <!--caso seja não somente fecha o modal-->

                <p:commandButton id="btnNao" value="Não" onclick="confirmation.hide();" type="button"/>

            </p:confirmDialog>

        </h:form>
            <!-- Fim Form Confir -->


            <!-- Codigo para mostrar os detalhes INICIO -->
            <p:dialog widgetVar="alunod"
                      header="Detalhes do Aluno" width="420"
                      modal="true">
                <h:form id="alunosd">
                    <h:inputHidden value="#{v}"/>


                    <h:panelGrid  columns="2">  
                        <h:outputLabel for="nome" value="Nome: " />  
                        <h:outputText id="nome" value="#{alunoBean.aluno.nome}" />  

                        <h:outputLabel for="data_de_nascimento" value="Nascimento: " />  
                        <h:outputText id="data_de_nascimento" value="#{alunoBean.aluno.dataNascimento}"> 
                            <f:convertDateTime pattern="dd/MM/yyyy" />
                        </h:outputText>  

                        <h:outputLabel for="rg" value="RG: " /> 
                        <h:outputText id="rg" value="#{alunoBean.aluno.rg}" />

                        <h:outputLabel for="cpf" value="CPF: " /> 
                        <h:outputText id="cpf" value="#{alunoBean.aluno.cpf}" />

                        <h:outputLabel for="estado" value="Estado: " /> 
                        <h:outputText id="estado" value="#{alunoBean.aluno.estado.nome}" />

                        <h:outputLabel for="cidade" value="Cidade: " />  
                        <h:outputText id="cidade" value="#{alunoBean.aluno.cidade.nome}" />

                        <h:outputLabel for="endereco" value="Endereço: " />  
                        <h:outputText id="endereco" value="#{alunoBean.aluno.endereco}" />

                        <h:outputLabel for="tel" value="Telefone: " /> 
                        <h:outputText id="tel" value="#{alunoBean.aluno.telefoneResidencial}" />

                        <h:outputLabel for="cel" value="Celular: " /> 
                        <h:outputText id="cel" value="#{alunoBean.aluno.telefoneCelular}" />           

                        <h:outputLabel for="email" value="e-Mail: " />  
                        <h:outputText id="email" value="#{alunoBean.aluno.email}" />

                        <h:outputLabel for="sexo" value="Sexo: " />  
                        <h:outputText id="sexo" value="#{alunoBean.aluno.sexo}" />

                        <h:outputLabel for="certidao" value="Certidão de Nascimento: " />  
                        <h:outputText id="certidao" value="#{alunoBean.aluno.certidaoNascimento}" />

                        <h:outputLabel for="responsavel" value="Nome do Responsável: " />  
                        <h:outputText id="responsavel" value="#{alunoBean.aluno.nomeResponsavel}" />

                        <h:outputLabel for="escola" value="Escola: " />  
                        <h:outputText id="escola" value="#{alunoBean.aluno.escola}" />

                        <h:outputLabel for="tipoescola" value="Tipo de Escola: " />  
                        <h:outputText id="tipoescola" value="#{alunoBean.aluno.tipoEscola}" />

                    </h:panelGrid>  

                </h:form>
            </p:dialog>

            <p:dialog widgetVar="inserir"
                      header="Inserir Aluno" 
                      modal="true" resizable="false">
                <h:form id="cadastro">
                    <h:inputHidden value="#{alunoBean.aluno.id}"/>

                    <p:growl id="aviso2" life="2000"/>
                    <h:panelGrid columns="3">

                        <h:outputText value="Nome: "/>
                        <p:inputText id="nome"  validatorMessage="Apenas Letras!" required="true" size="50" requiredMessage="Campo Nome Obrigatório" value="#{alunoBean.aluno.nome}">
                         <p:ajax update="nome aviso2 nomem"/>
 <f:validateRegex pattern="([A-Za-zÁ-ú ]+)"/>                            

                        </p:inputText>
                        <p:message id="nomem" for="nome" />

                        <h:outputText value="Certidão de Nascimento: " />  
                        <p:inputText  id="certidao" value="#{alunoBean.aluno.certidaoNascimento}"/>
                        <p:message id="certidaom" for="certidao"/>

                        <h:outputText value="RG: " />
                        <p:inputText  size="7" id="rg" value="#{alunoBean.aluno.rg}"/>
                        <p:message id="rgm" for="rg" display="icon"/>

                        <h:outputText value="Cpf: " />
                        <p:inputMask size="14" required="false" id="cpf" value="#{alunoBean.aluno.cpf}" mask="[CPF removido]">
                            <p:ajax update="cpf aviso2"/>
                           
                        </p:inputMask>
                        <p:message id="cpfm" for="cpf" />

                    
                

                        <h:outputText value="Data de Nascimento: " />
                        <p:calendar size="10" mindate="01/01/1900"  yearRange="40" maxdate="01/01/2005" id="data" navigator="true" value="#{alunoBean.aluno.dataNascimento}" pattern="dd/MM/yyyy" locale="pt" />
                        <p:message id="datam" for="data"/>

                        <h:outputText value="Nome do Responsável: " />  
                        <p:inputText  id="responsavel" size="50" value="#{alunoBean.aluno.nomeResponsavel}"/>
                        <p:message id="responsavelm" for="responsavel"/>

                        <h:outputText value="Estado: " />
                        <p:selectOneMenu id="ban" value="#{alunoBean.idEstado}" immediate="true">
                            <f:selectItem itemLabel="Selecione um estado..." itemValue="" /> 
                            <f:selectItems value="#{estadoBean.estados}" var="b"
                                           itemLabel="#{b.nome}" itemValue="#{b.id}" />
                            <p:ajax update="agn"/>
                        </p:selectOneMenu>
                        <p:message id="banm" for="ban"/>

                        <h:outputText value="Cidade: "/>
                        <p:selectOneMenu id="agn" value="#{alunoBean.idCidade}" 
                                         immediate="true" >
                            <f:selectItem itemLabel="Selecione uma cidade..." itemValue="" /> 
                            <f:selectItems value="#{alunoBean.agnEstados}" var="a"
                                           itemLabel="#{a.nome}" itemValue="#{a.id}" />
                        </p:selectOneMenu>

                        <p:message id="agnm" for="agn"/>

                        <h:outputText value="Endereço: " />  
                        <p:inputText  id="endereco"  size="50" value="#{alunoBean.aluno.endereco}"/>
                        <p:message id="enderecom" for="endereco"/>

                        <h:outputText value="Telefone Residencial: " />  
                        <p:inputMask id="telefone" size="14" value="#{alunoBean.aluno.telefoneResidencial}" label="telefone" mask="([telefone removido]"/>
                        <p:message id="telefonem" for="telefone"/>

                        <h:outputText  value="Telefone Celular: " /> 
                        <p:inputMask id="celular" size="14" value="#{alunoBean.aluno.telefoneCelular}" label="celular" mask="([telefone removido]"/>
                        <p:message id="celularm" for="celular"/>

                        <h:outputText value="E-mail: " />  
                        <p:inputText id="email" size="50" value="#{alunoBean.aluno.email}" validatorMessage="O e-mail informado não é válido"><p:ajax update="email aviso2 emailm"/>
                            <f:validateRegex pattern="(^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$)" /></p:inputText>
                        <p:message id="emailm" for="email"/>

                        <h:outputText value="Sexo: " />  
                        <p:selectOneRadio id="sexo" value="#{alunoBean.aluno.sexo}">  
                            <f:selectItem itemLabel="Masculino" itemValue="Masculino" />  
                            <f:selectItem itemLabel="Feminino" itemValue="Feminino" />  
                        </p:selectOneRadio>
                        <p:message id="sexom" for="sexo"/>

                        <h:outputText value="Escola: " />  
                        <p:inputText id="escola" size="50" value="#{alunoBean.aluno.escola}" />
                        <p:message id="escolam" for="escola" display="icon"/>

                        <h:outputText value="Tipo de Escola: " />  
                        <p:selectOneRadio id="tipoescola" value="#{alunoBean.aluno.tipoEscola}">
                            <f:selectItem itemLabel="Pública" itemValue="Pública" />
                            <f:selectItem itemLabel="Particular" itemValue="Particular" />

                        </p:selectOneRadio> 
                        <p:message id="tipoescolam" for="tipoescola" display="icon"/>


                    </h:panelGrid>
                    <p:commandButton update=":formAluno:tabelaaluno,aviso2,cadastro" value="Salvar" action="#{alunoBean.salvar}"/>
                    <!--<p:commandButton  update="cadastro" value="Limpar" action="#{alunoBean.limpar()}"/>
                    --> 
                    <p:commandButton immediate="true" value="Cancelar"
                                     oncomplete="inserir.hide()"/>
                </h:form>
            </p:dialog>
 
        </p:fieldset>

    </ui:define>

</ui:composition>
W

como vc fez ?

leonhard32:
Conseguiu resolver o problema?

Estava tendo o mesmo problema, só precisa utilizar o filteredValue dentro do seu datatable.

[]'s

L

assim…

1 - no <p:datatable> vc precisa definir um filteredValue(por exigência da versão do prime que ele está usando - que deve ser a mesma que a minha - dá uma olhada na documentação)

<p:datatable filteredValue="#{fornecedorBean.filtroFornecedor}">

2 - no managedbean vc define esse atributo assim: //criado esse filtro para parar com o erro do filteredValue do jsf
private List filtroFornecedor;

observa que tem o mesmo nome o atributo…só isso…tenta aê e depois responde se deu!!!

W

como ficaria o managebean ? o codigo da lista ? e do Dao ?

leonardoteles:
assim…

1 - no <p:datatable> vc precisa definir um filteredValue(por exigência da versão do prime que ele está usando - que deve ser a mesma que a minha - dá uma olhada na documentação)

<p:datatable filteredValue="#{fornecedorBean.filtroFornecedor}">

2 - no managedbean vc define esse atributo assim: //criado esse filtro para parar com o erro do filteredValue do jsf
private List filtroFornecedor;

observa que tem o mesmo nome o atributo…só isso…tenta aê e depois responde se deu!!!

W

opa manow deu certo sim, obrigado :smiley:

L

Deu certo mesmo?..que maneiro…vc é o primeiro que consigo ajudar aqui!!!

show de bola!!!

abraço!!

W

deu certo sim, obrigado :smiley:

leonardoteles:
Deu certo mesmo?..que maneiro…vc é o primeiro que consigo ajudar aqui!!!

show de bola!!!

abraço!!

D

comigo não funcionou…ate filtra mais sempre seleciona a primeira linha, alem de não voltar a lista original quando apago os dados do input.

W

posta o teu codigo ai pra gente ve

D

então, ele filtra normalmente agora, porem sempre que filtra so pega a primeira linha…to usando o primefaces3.5
no controler, posto o codigo completo?

private List<Operador> filtroOperador;

    public List<Operador> getFiltroOperador() {
        return filtroOperador;
    }

    public void setFiltroOperador(List<Operador> filtroOperador) {
        this.filtroOperador = filtroOperador;
    }

no xhtml:

<p:dataTable id="tabela" var="operador" 
            widgetVar="operadorTable"  value="#{operadorController.listarOperadores}"  
            filteredValue="#{operadorController.filtroOperador}">


<p:commandLink  value="Alterar" 
                        actionListener="#{operadorController.prepararAlterarOperador}"
                        update=":tabela3:infosOperador" oncomplete="dialogGerOperador.show()">
                        </p:commandLink>
W
diogobsb:
então, ele filtra normalmente agora, porem sempre que filtra so pega a primeira linha...to usando o primefaces3.5 no controler, posto o codigo completo?
private List<Operador> filtroOperador;

    public List<Operador> getFiltroOperador() {
        return filtroOperador;
    }

    public void setFiltroOperador(List<Operador> filtroOperador) {
        this.filtroOperador = filtroOperador;
    }
no xhtml:
<p:dataTable id="tabela" var="operador" 
            widgetVar="operadorTable"  value="#{operadorController.listarOperadores}"  
            filteredValue="#{operadorController.filtroOperador}">


<p:commandLink  value="Alterar" 
                        actionListener="#{operadorController.prepararAlterarOperador}"
                        update=":tabela3:infosOperador" oncomplete="dialogGerOperador.show()">
                        </p:commandLink>
amigo ta faltando no seu botao o f:setPropertyActionListener, pode ser por causa disso veja o meu como ficou:
<p:commandButton value="Alterar" action="#{alunoBean.alterar()}"  image="ui-icon ui-icon-pencil" oncomplete="inserir.show()"  
                                         update=":cadastro">  
                            <f:setPropertyActionListener value="#{v}" target="#{alunoBean.aluno}"/>  
                        </p:commandButton>
W

no caso do meu “V” o seu é o “operador” que t na VAR=operador

D

rapaz era isso mesmo! funcionou perfeitamente!!! muito obrigado pela rapida ajuda!

W

:smiley:

Criado 10 de junho de 2012
Ultima resposta 29 de ago. de 2013
Respostas 22
Participantes 9