Limpar p:dataTable

Boa tarde pessoal

Bom, estou com o seguinte problema, tenho uma consulta de pedidos filtrada, onde o usuário irá consultar pedidos de acordo com os parâmetros que ele escolher. Ao consultar os pedidos, eles serão exibidos em uma dataTable, sendo que pra cada registro terá um botão que ao ser clicado, serão exibidos os itens do pedido em uma tabela abaixo.
Até aí tudo bem, funcionando perfeitamente.
Porém, quando realizo uma nova consulta, os pedidos são atualizados com os novos parâmetros, tudo certo… mas a tabela de itens não limpa. Ela ainda continua com os registros de uma consulta anterior. Por exemplo, faço uma consulta de pedidos, clico em um pedido pra mostrar os itens, e eles são exibidos. Em seguida realizo uma nova consulta de pedidos, os pedidos são exibidos, porém a tabela de itens continua com aqueles registros anteriores.
Como posso resolver isso? Isso é uma coisa simples, mas to apanhando mesmo assim

Seguem os códigos (eu dividi eles em arquivos diferentes)

Filtro:

[code]ui:composition
<h:form id=“filtro”>
<h:panelGrid columns=“8”>
<h:outputLabel value="Período: " for=“periodo” class=“rotulos” />

        <p:calendar id="dataInicial" value="#{pedidoDeCompraBean.dataInicial}" pattern="dd/MM/yyyy" size="15" showOn="button" />
        <p:calendar id="dataFinal" value="#{pedidoDeCompraBean.dataFinal}" pattern="dd/MM/yyyy" size="15" showOn="button" />

        <p:spacer width="50" height="10" />

        <h:outputLabel value="Situação: " for="situacao" class="rotulos" />

        <p:selectOneRadio id="situacao" value="#{pedidoDeCompraBean.situacao}" >
            <f:selectItem itemLabel="Finalizado" itemValue="FINALIZADO" />
            <f:selectItem itemLabel="Faturado" itemValue="FATURADO" />
            <f:selectItem itemLabel="Cancelado" itemValue="CANCELADO" />
        </p:selectOneRadio>

        <p:spacer width="30" height="10" />

        <p:commandButton value="Consultar" action="#{pedidoDeCompraBean.buscar()}" update=":pedidos:tabelaPedidos" />
    </h:panelGrid>
</h:form>

</ui:composition>[/code]

Listagem de pedidos:

[code]ui:composition
<h:form id=“pedidos”>
<p:dataTable id=“tabelaPedidos” value="#{pedidoDeCompraBean.pedidos}" var=“pedidoDeCompra"
emptyMessage=“Nenhum registro disponível.“
paginator=“true” rows=“5” paginatorPosition=“bottom"
paginatorTemplate=”{FirstPageLink} {PreviousPageLink}
{PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}“
rowsPerPageTemplate=“5, 10, 15”>
<f:facet name=“header”>Lista de Pedidos de Compra</f:facet>
<p:column width=“5%” styleClass=“centralizar”>
<f:facet name=“header”>Código</f:facet>
#{pedidoDeCompra.codPedidoDeCompra}
</p:column>
<p:column width=“5%” styleClass=“centralizar”>
<f:facet name=“header”>Cód. Forn.</f:facet>
#{pedidoDeCompra.codFornecedor}
</p:column>
<p:column>
<f:facet name=“header”>Fornecedor</f:facet>
#{pedidoDeCompra.fornecedor}
</p:column>
<p:column width=“25%”>
<f:facet name=“header”>CFOP</f:facet>
#{pedidoDeCompra.cfop.descricao}
</p:column>
<p:column width=“7%” styleClass=“centralizar”>
<f:facet name=“header”>Data de Emissão</f:facet>
<h:outputText value=”#{pedidoDeCompra.dataDeEmissao}”>
<f:convertDateTime pattern=“dd/MM/yyyy” />
</h:outputText>
</p:column>
<p:column width=“7%” styleClass=“centralizar”>
<f:facet name=“header”>Situação</f:facet>
#{pedidoDeCompra.situacao}
</p:column>
<p:column width=“3%”>
<f:facet name=“header”>Itens</f:facet>
<p:commandButton action=”#{itemDaCompraBean.buscarItens(pedidoDeCompra)}” update=":itens" icon=“itens” />
</p:column>

    </p:dataTable>
</h:form>

</ui:composition>[/code]

Itens do pedido:

<ui:composition> <h:form id="itens"> <p:dataTable id="tabelaItens" value="#{itemDaCompraBean.itens}" var="itemDaCompra" emptyMessage="Nenhum registro disponível." paginator="true" rows="5" paginatorPosition="bottom" paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5, 10, 15"> <f:facet name="header">Itens do pedido selecionado</f:facet> <p:column width="3%"> <f:facet name="header">Cód. Produto</f:facet> #{itemDaCompra.codProduto} </p:column> <p:column> <f:facet name="header">Descrição</f:facet> #{itemDaCompra.descricao} </p:column> <p:column width="10%"> <f:facet name="header">Quantidade</f:facet> #{itemDaCompra.quantidade} </p:column> </p:dataTable> </h:form> </ui:composition>

Método buscar do Bean do pedido de compra:

[code]public List buscar() throws SQLException {
PedidoDeCompraRN pedidoDeCompraRN = new PedidoDeCompraRN();
this.pedidos = pedidoDeCompraRN.buscar(dataInicial, dataFinal, situacao);

    return this.pedidos;

}[/code]

Método buscarItens no Bean do item da compra:

[code]public List buscarItens(PedidoDeCompra pedidoDeCompra) throws SQLException {
ItemDaCompraRN itemDaCompraRN = new ItemDaCompraRN();
this.itens = itemDaCompraRN.buscar(pedidoDeCompra.getCodPedidoDeCompra());

    return this.itens;

}[/code]

e reparem que eu faço o seguinte, ao clicar pra mostrar os itens, a busca dos itens é realizada pra determinado pedido, e eu coloquei pra atualizar a tabela de itens, sendo que nessa tabela, eu busco os itens pelo getItens (ou somente itens), ou seja, com buscarItens(pedido) eu preencho a lista de itens, e depois ao atualizar a tabela eu chamo getItens.

public List<ItemDaCompra> getItens() throws SQLException { return this.itens; }

Bom, é isso, espero que alguém possa me ajudar tirando essa dúvida.
Desde já agradeço muito.

Bom, com o Primefaces, normalmente a estrutura é assim:

<h:form>
   <p:outputPanel>
      <p:dataTable>
      </p:dataTable>
   </p:outputPanel>
</h:form>

Quando você quer atualizar, manda atualizar o p:outputPanel, e não o form, nem o dataTable. Veja se isto ajuda.

[quote=Roselito Fávero da Silva]Bom, com o Primefaces, normalmente a estrutura é assim:

<h:form>
   <p:outputPanel>
      <p:dataTable>
      </p:dataTable>
   </p:outputPanel>
</h:form>

Quando você quer atualizar, manda atualizar o p:outputPanel, e não o form, nem o dataTable. Veja se isto ajuda.
[/quote]

Também não foi :confused:

Muito estranho isso, porque tipo, no botão pra consultar eu coloquei pra atualizar tanto a tabela de pedidos quanto a de itens, mas ta ficando o registro anterior na tabela de itens

E qual é o escopo do bean?

To usando ViewScoped

você está limpando a lista ? ( itens.clear() )

da uma testada com o RequestScoped.

[quote=Polverini]você está limpando a lista ? ( itens.clear() )

da uma testada com o RequestScoped.[/quote]

Com Request não funciona

tipo, a cada busca q eu faço, uma nova lista de pedidos é gerada, e aí a lista de itens eh gerada de acordo com o clique no pedido
no caso pra limpar a lista eu até tentei, mas talvez eu tenha tentado da forma errada
Porque quando eu clico pra consultar os pedidos, ele busca o pedido através do método buscar do bean do pedido
Aí quando eu clico no botão pra mostrar os itens, ele vai no método buscarItens do bean do item

Nesse caso, onde eu poderia colocar o itens.clear?