搜索之后,p:dataTable不会更新,除非调用两次搜索或输入过滤器中的某些内容并清除

时间:2016-02-21 19:11:16

标签: jsf primefaces datatable filtering ajax-update

我有一个简单的模型,在我的数据表中获取一些结果之后尝试更新dataTable,我使用EJB在我的数据库中获取此结果。

问题是,在搜索之后,我的dataTable不会更新,除非点击搜索按钮2次或在fieldText过滤器中输入内容并清除它之后。

我尝试将一些功能作为" onclick并更新"但所有解决方案都不起作用。

一个重要的情况是:如果删除了我的dataTble的fieldText过滤器,那么dataTable完全没有错误地更新:)。

有人可以说另一种方式或方向来解决我的问题吗?

xhtml代码:

path

Bean代码:

<h:form id="frmPesquisa">
    <p:panelGrid columns="3">
        <h:outputLabel value="Pesquisar" for="pesquisa" />
        <h:inputText id="pesquisa"
            value="#{cadastroClienteBean.valorPesquisa}" />
        <p:commandButton value="Pesquisar"
            action="#{cadastroClienteBean.pesquisar}" update="tableResult"
            onclick="PF('itemListases').clearFilters(); PF('itemListases').filter();"/>
    </p:panelGrid>
    <br />
    <br />
    <br />
    <p:dataTable rendered="#{cadastroClienteBean.listaVazia()}" paginator="true" rows="5" widgetVar="itemListases"
        emptyMessage="Não foram encontrados Itens"
        filteredValue="#{cadastroClienteBean.filtrados}" id="tableResult"
        value="#{cadastroClienteBean.clientes}" var="cliente" border="1"
        cellpadding="5">
        <p:column headerText="Código" filterBy="#{cliente.codigo}">
            <h:outputText value="#{cliente.codigo}" />
        </p:column>
        <p:column headerText="Nome">
            <h:outputText value="#{cliente.nome}" />
        </p:column>
        <p:column headerText="Idade">
            <h:outputText value="#{cliente.idade}" />
        </p:column>
        <p:column headerText="Sexo">
            <h:outputText value="#{cliente.sexo}" />
        </p:column>
        <p:column headerText="Profissão">
            <h:outputText value="#{cliente.profissao}" />
        </p:column>
    </p:dataTable>
</h:form>

1 个答案:

答案 0 :(得分:0)

非常感谢。它完美地运作。我删除了数据表的渲染并添加了一个id标记。在我的commandButton中,我插入了一个更新标记,其中包含我之前创建的dataTable的标记ID。