用于primefaces数据表的自定义过滤器

时间:2012-05-28 17:01:49

标签: primefaces

我正在使用PF3.2,JSF 2.0和GF 3.1。

我有一个数据表,上面有自定义过滤器。在Firefox中一切正常但数据表在IE中没有更新。当我点击页面中的任何地方时,会触发ajax并更新数据表。

这是代码 -

<p:dataTable id="std"
                                             value="#{myController.stdList}"
                                             selection="#{myController.std}"
                                             selectionMode="multiple"
                                             var="std"
                                             widgetVar="empTable"
                                             paginator="true"
                                             pageLinks="5"
                                             paginatorPosition="bottom"
                                             paginatorAlwaysVisible="true"
                                             currentPageReportTemplate="Page {currentPage} of {totalPages}"
                                             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
                                             rows="10"
                                             rowKey="#{std}"
                                             sortBy="#{std.lastName}"
                                             sortOrder="ascending"
                                             >
                                    <p:ajax event="rowSelect" 
                                            listener="#{myController.onRowSelectListener}" 
                                            process="@this"
                                            update="std"
                                            /> 

                                    <f:facet name="header">  
                                        <p:outputPanel>  
                                            <h:outputText value="#{bundle.GlobalFilterPrompt}" />  
                                    <p:inputText id="stdFilter" 
                                                 style="width:150px" 
                                                 valueChangeListener="#{myController.stdListener}">
                                        <p:ajax update="attendees" 
                                                process="@this" 
                                                event="change"
                                                />                     
                                    </p:inputText>

stdListener方法从输入框中读取值,获取新数据并更新数据表。

为什么它在IE中不起作用?

由于

1 个答案:

答案 0 :(得分:1)

通过使用PrimeFaces remoteCommand调用dataTable的AJAX / jQuery filter()函数,我获得了成功:

<p:inputText id="stdFilter" value="#{myController.myFilterValue}"
         style="width:150px">

<p:ajax event="change" onsuccess="myFilterUpdateCommand();"/>

<p:remoteCommand id="myRemoteCommandId" name="myFilterUpdateCommand"
                 actionListener="#{myController.stdListener()}"
                 update="attendees"
                 oncomplete="empTable.filter();"/>

我认为你需要在inputText组件中添加一个值,以获得模型/支持bean的过滤值。