0

ユーザーに 4 つの入力フィールドを入力してから新しいドキュメントを作成する xpage があり、すぐに同じページの Dojo データ グリッドにドキュメントを表示します。すべてのバックエンド データにマネージド Bean を使用しています。メイン ドキュメント用に 1 つの Bean があり、関連するデータごとに 2 つ目の Bean があります。UNID を使用してそれらを結び付けます。入力フィールドはすべて shipperBean にバインドされています。

私の問題は、親と最初のサブドキュメントのみが作成されることです。新しい Bean をインスタンス化する必要があるようですが、「マネージド」のように、それはあなたのために行われたと思いました。

私のボタンには、次のSSJSがあります。

var POdata:NotesDatabase = session.getDatabase(database.getServer(), "PO\\PO-data");
lineItemBean.saveLineItem(POdata);  //MUST save line item in order to tie Shipper to Line Item
var liUNID = lineItemBean.getThisUNID();
var poUNID = lineItemBean.getParentUNID();
shipperBean.saveShipper(POdata, liUNID, poUNID);
shipperBean.deleteCurrentShipper();

このボタンは、入力を保持しているテーブルで部分的な更新を実行します。saveShipper() メソッドは、Bean を別の nsf の新しいドキュメントに保存します。deleteCurrentShipper() メソッドは、単にインスタンス変数を null に設定します。これにより、それらは一掃され、次のドキュメントの準備が整います。値の消去を反映するように、フロント エンドが正しく更新されます。フロントエンドで毎回クリアされますが、最初に値を入力すると新しいドキュメントに保存されません。

毎回新しいインスタンスを作成する必要がありますか? または、試みているように同じインスタンスを再利用できますか?

代わりに POJO を使用して自分で作成する必要がありますか?

SSJS を使用せず、すべてを別の Java メソッドで実行して呼び出す必要がありますか?

2 番目の Bean を最初の Bean のプロパティにする必要がありますか?

私が見逃している簡単なものはありますか?

4

3 に答える 3

1

このアプローチを使用することをお勧めします: http://www.mindoo.de/web/blog.nsf/dx/16.07.2009095816KLEBCY.htm

Bean は Map インターフェイスを実装し、get() メソッドでキー パラメータに従って子オブジェクトを提供する必要があります。このようにして、非常にシンプルで「素敵な」バインディングを作成できます。

オブジェクト「ライン」を提供する「テーブル」Bean があるとしましょう ( faces-conig.xml! では、子オブジェクトは Bean として定義されていません)。テーブルの get() メソッドで、適切な行オブジェクトをインスタンス化してキャッシュするか、キャッシュから取得します。一部のセルの EL は「#{table[row_key].attribute}」です。

于 2013-07-11T08:29:34.177 に答える