JSF 2.1
+ Web アプリケーションでは、ロードPrimeFaces 3.2
後に JavaScript 関数をトリガーする必要がありますp:dataTable
。このコンポーネントにはそのようなイベントがないことがわかっているので、回避策を見つける必要があります。
シナリオをよりよく理解するために、ページの読み込み時に dataTable はレンダリングされません。ログインが成功するとレンダリングされます。
<p:commandButton value="Login" update=":aComponentHoldingMyDataTable"
action="#{loginBean.login}"
oncomplete="handleLoginRequest(xhr, status, args)"/>
上記のコードからわかるように、ログインに成功した後に JavaScript フックを用意しました。このupdate
属性は、dataTable のレンダリングされた属性を強制的に再評価します。
<p:dataTable var="person" value="#{myBean.lazyModel}" rendered="#{p:userPrincipal() != null}" />
データテーブルが読み込まれた後、 cometDトピックをサブスクライブするために、各行項目で JavaScript 関数を実行する必要があります。
理論的には、dataTable に表示される値をもう一度取得するためにoncomplete
、ログイン ボタンの属性を使用してプロパティをトリガーすることができますが、あまりエレガントではないようです。myBean
rowKey
JavaScript 関数は、dataTable の各行に対して何かを行う必要があります。
function javaScriptFunctionToBeTriggered(rowKey) {
// do something
}