0

私はJSF(わずか1週間前)にかなり慣れておらず、最初のコンポーネントを開発しています。コンポーネントは、コレクションを入力として受け取り、コンテンツをテーブル形式でレンダリングするテーブルのようなものです。これに加えて、各行の最後に「削除」リンクが表示されます。

「Composite」コンポーネント(.xhtml)とComponentType(@FacesComponentを持つJavaクラス)を作成しました。

完全なテーブルレンダリングを取得し、「削除」リンクが各行に表示されます。@FacesComponentを使用してクラスで定義されているアクションを追加しようとしています。

<a4j:commandLink action="#{cc.removeRow(rowKey)}" value="Remove"/>

私のコンポーネント(Javaクラス)では、このメソッドremoveRow(Integer rowKey)を定義しています。ただし、この「削除」リンクをクリックしても、アクションはトリガーされません。コンポーネントにも「h:form」が定義されています。

ヘルプやポインタは大歓迎です。

編集済み:この質問をご覧くださいJSF 2.0コンポジットコンポーネントを使用して動的リストを実装するにはどうすればよいですか?そしてそれはほとんど私の要件に似ています。レンダリングされたときのフォームアクションがどうなるか、コンポーネントのボタンをクリックすると、独自のコンポーネントBean内でメソッドがどのように呼び出されるかがわかりません。

4

1 に答える 1

0

わかりました、これは私がやっていた間違いです。

Guava "Table" Collection を使用してカスタム テーブルをレンダリングしています。このテーブルの初期化は、一度呼び出された「encodeBegin」で行われます。したがって、送信をクリックすると、テーブルを再レンダリングしようとしていて、すべてが null と見なされるため、NPE がスローされます。

テーブルの初期化を別のメソッドとヘルパー メソッドに抽出して、既存のテーブルが null でない場合に取得するか、属性から再初期化します。

それは今動作します。

于 2012-12-28T04:50:14.047 に答える