2012-04-21 70 views
4

我想在p:dataTable上实现自定义过滤。在dataTable的头文件中,我有一个p:inputText,我想通过ajax过滤表格。我遇到的问题是bean方法没有被p:ajax标记调用。下面是有问题的代码片断:听众没有通过p:ajax调用p:inputText

<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> 

和背豆:

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

当我在inputText的键入时,SYSOUT从不打印。我还注意到,我的ajax通知程序/状态图标没有显示任何活动,所以我怀疑发生了什么。

编辑

我只是想拖放号码:从Eclipse的调色板AJAX进入我的XHTML代码,它说用这个,我需要导入库到我的工作区。我让它继续,它将primefaces v3.2 jar文件添加到Web_INF/lib中。 p:ajax仍然不起作用。

我很困惑,为什么它要求这样做,因为所有Primefaces组件都一直在努力工作。项目设置可能有问题吗?

+0

您的输入文本没有值属性。这是复制/粘贴问题吗? – 2012-04-21 18:46:01

+0

是的,我在粘贴问题时意外删除了它。我编辑了这个问题来反映。谢谢。 – 2012-04-21 19:01:07

回答

0

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