4

ap:dataTable にカスタム フィルタリングを実装したいと考えています。dataTable のヘッダーには、ajax を介してテーブルをフィルター処理する ap:inputText があります。私が抱えている問題は、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>

そしてバッキングビーン:

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

inputText を入力すると、Sysout が出力されません。また、私の ajax 通知/ステータス アイコンにアクティビティが表示されていないことにも気付いたので、何かが起こっているとは思えません。

編集

p:ajax を Eclipse のパレットから xhtml コードにドラッグ アンド ドロップしようとしたところ、これを使用してライブラリをワークスペースにインポートする必要があると言われました。先に進むと、primefaces v3.2 jar ファイルが Web_INF/lib に追加されました。p:ajax はまだ機能しません。

すべての Primefaces コンポーネントがずっとうまく機能していたので、なぜこれを要求したのか、私は混乱しています。プロジェクトのセットアップに問題がある可能性がありますか?

4

1 に答える 1

0

私は今日これと同じ問題を見ました。バッキングBeanで、setter関数のgetter関数はあるqueryが、setter関数がない場合、p:ajaxはそのリスナーを呼び出さないことがわかります。Javaコードのそのセクションを投稿しなかったので、これが問題である可能性が高いと思います。

于 2012-12-10T17:28:05.373 に答える