4

我想在 ap:dataTable 上实现自定义过滤。在 dataTable 的标题中,我有 ap:inputText 我想通过 ajax 过滤表。我遇到的问题是 bean 方法没有被 p:ajax 标记调用。这是有问题的代码片段:

   <h:form id="form1">
        <p:dataTable id="selectTable" var="select"
           selectionMode="multiple" rowKey="#{select.id}" 
           value="#{pc_Selectcourses.allCourses}">
           <f:facet name="header">
              <p:outputPanel>
                 Search For Courses Completed:
                 <p:inputText id="filterEntry" value="#{pc_Selectcourses.query}">
                    <p:ajax event="keyup" update=":form1:selectTable"
                       listener="#{pc_Selectcourses.filterListener}" />
                 </p:inputText>
              </p:outputPanel>
           </f:facet>
           <!-- table columns here, etc. -->
       </p:dataTable>
   </h:form>

和支持bean:

public void filterListener() {
   System.out.println("Hello world, hope you're listening...");
}

当我输入 inputText 时,Sysout 永远不会被打印出来。我还注意到我的 ajax 通知程序/状态图标没有显示任何活动,所以我怀疑发生了什么。

编辑

我刚刚尝试将 p:ajax 从 Eclipse 的 Palette 拖放到我的 xhtml 代码中,它说要使用它,我需要将库导入我的工作区。我让它继续,它将 primefaces v3.2 jar 文件添加到 Web_INF/lib 中。p:ajax 仍然不起作用。

我很困惑为什么它要求这样做,因为所有 Primefaces 组件一直运行良好。项目设置可能有问题吗?

4

1 回答 1

0

我今天看到了同样的问题。事实证明,在您的支持 bean 中,如果您有一个 getter 函数query但没有一个 setter 函数,p:ajax 将不会调用它的侦听器。由于您没有发布 Java 代码的那部分,我认为这很有可能是您的问题。

于 2012-12-10T17:28:05.373 回答