如何通过服务器端重置dataTable过滤器

时间:2013-03-21 17:00:41

标签: jsf-2 primefaces

我的主要jsf包含2个jsf,其中每个jsf都有一个带过滤选项的表。

这是主要的一个简短示例:

  <h:panelGroup id="b1">
                <p:commandButton
                    value="exe"
                    actionListener="#{bean.handle}"
                    rendered="#{bean.render}"
                    update=":mainForm:panel1,:mainForm:panel2">
                </p:commandButton>
            </h:panelGroup>
        </h:panelGrid>
    </p:panel>

    <ui:include src="table1.xhtml" />
    <ui:include src="table2.xhtml" />

问题是我需要在更改2个表之间的视图时删除过滤器 我不能通过clearFilters使用客户端,因为我有2个表:

<p:commandButton
oncomplete="table1Widget.clearFilters() ????"

所以我认为通过句柄方法在服务器端最好的地方但过滤器列表是空的,还有表

DataTable dt1 = (DataTable) FacesContext.getCurrentInstance().getViewRoot().findComponent("mainForm: .... ");

如何重置过滤器?

由于

3 个答案:

答案 0 :(得分:1)

我的会话中有2个数据表。我不理解原因,但是当我使用dt1.reset()时,它会重置它们。

我试过

dt1 = new DataTable();

它解决了我的问题。

注意:当我尝试使用1个数据表时,dt1.reset()可以正常工作。

答案 1 :(得分:0)

您可以在您拥有的数据表中使用以下任一项:

  1. dt1..setFilters(null);将删除数据表过滤器值

  2. dt1.reset()也会将数据表重置为处女状态

答案 2 :(得分:0)

使用 Primefaces当前帮助程序(版本6.2)在服务器端执行clearFilter,如下所示:

case "circle":
    pJS.canvas.ctx.arc(p.x, p.y, radius, 0, Math.PI * 2, false);
    var context = pJS.canvas.ctx.canvas.getContext("2d");
    context.beginPath();
    context.fillStyle = "black";
    context.fillText("Hello World!", p.x, p.y);
    context.fill();
    break;