1

我正在使用 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 中不起作用?

谢谢

4

1 回答 1

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。

于 2013-12-31T19:25:37.793 回答