1

私はまだデータ テーブル UI アプリケーションを開発中であり、ついにこのコンポーネントの開発の最終段階であるインライン セル編集に取りかかりました。

まず第一に、データ テーブルは Java 側で完全に動的に構築され、テーブルを記述するために facelet 宣言は使用されません。静的テーブル宣言がある場合、編集は次のように指定できます(セル内編集の章を参照)。

<p:dataTable>
    ...
    <p:ajax event="rowEdit" listener="#{tableBean.onEdit}"/>  
    ...
</p:dataTable>

Javaコードで編集可能なデータテーブルを簡単に指定できますdataTable.setEditable(true)-そしてそれは機能します.保存/キャンセルアイコンの編集はうまく機能していますが、バックエンドでは効果がありません. データテーブルが動的にレンダリングされるため、PF ShowCase Labsページで指定された方法で宣言できないため(常にそこでリスナーを使用する必要がありますか?)、次を使用しようとしています:

public static AjaxBehavior createAjaxBehavior(MethodExpression expression) {
    final AjaxBehavior behavior = new AjaxBehavior();
    behavior.addAjaxBehaviorListener(new AjaxBehaviorListenerImpl(expression));
    return behavior;
}
...
dataTable.addClientBehavior("rowEdit", createAjaxBehavior(createMethodExpression(TableBean.class, "onEdit", void.class, new Class<?>[] {RowEditEvent.class})));

しかし、リスナーを追加するとすぐに、rowEdit上でやろうとしているように、すごい、突然得た:mojarra is not defined行編集の保存/キャンセルボタンが機能しません。わかりました、ここで説明され解決された同様の問題が見つかりました。必要なスクリプトを手動で含めました。クライアント側の JavaScript エラーはなくなりましたが、行編集モードを終了できず、行はまだ更新されていません

何が起こっているのかを理解するのに一日中無駄に費やしましたが、正しい道が見えません。後ろに何かを見落としているだけですか (特定の行を識別したり、おそらくどこかで何かを指定したりしますが、私の Java コードは PF の例で指定された以上のものを生成しません)、または何か?

前もって感謝します。

4

2 に答える 2

1

さて、私は次の方法で本当の理由を見つけました:

public static AjaxBehavior createAjaxBehavior(MethodExpression expression) {
    final AjaxBehavior behavior = new AjaxBehavior();
    behavior.addAjaxBehaviorListener(new AjaxBehaviorListenerImpl(expression));
    return behavior;
}

実際、メソッドはjavax.faces.component.behavior.AjaxBehavior (h:ajax?)代わりに実際に返されましたorg.primefaces.component.behavior.ajax.AjaxBehavior (p:ajax)-- これはクイックオートコンプリートが原因で発生したため、その事実を見逃しただけです。

PrimeFaces ライブラリがエラーを返さなかったことに不満を感じています。


Q & A を完了するには:

  • モハラ 2.1.7
  • プライムフェイス 3.2
于 2012-07-20T13:47:43.103 に答える
-1

現在 (少なくとも PF 6.0 の場合) はorg.primefaces.behavior.ajax.AjaxBehavior.

于 2016-11-06T18:59:02.780 に答える