1

単一のデータ ソース (Web サービス呼び出しをラップするセッション Bean) に基づくマスター ディテール テーブルのセットがあります。最上位のテーブル (t1) には商談データが表示され、最下層 (t2) には特定の商談の連絡先が表示されます。t1 でオポチュニティが選択されると、そのオポチュニティに関連付けられた連絡先が t2 に表示されます。これらのテーブルは必要に応じて機能します。

別のデータ コントロールに基づく読み取り専用フォーム (パネル フォーム レイアウト) があります (LinkedIn API を呼び出すセッション Bean と、EJB3 エンティティを介してデータベース テーブルを使用)。LinkedIn セッション Bean メソッドは、t2 の現在の行から取得したパラメーターを受け取ります。( #{bindings.relatedContact.currentRow.dataProvider.id} ) フォームで PartialTriggers を 't2' に設定しました。

ページが初めてロードされると、テーブル t2 の最初の行 (行 A) が選択され、フォームにはその行に関連付けられたデータが表示されます。別の行 (行 B) を選択すると、新しく選択した行の ID 値を使用してセッション Bean が呼び出されますが、フォームには行 A の関連データが表示されます。その後、t2 で行を選択するたびに、新しい値で Bean が呼び出されますが、フォームには以前に選択された行のデータが表示されます。

何が起きているかというと、(データ コントロールの古いデータを使用して) フォームが更新された後、セッション Bean が呼び出されます。Bean で print ステートメントと Thread.sleep() を使用してこれを確認しました。

これは正しい動作ですか? また、フォームが更新される前に Bean への呼び出しが確実に行われるようにするにはどうすればよいですか?

JDeveloper バージョン 11.1.2.2.0 を使用しています

ありがとう

マイケル

4

1 に答える 1

2

デフォルトでは、PageDef ファイル内の反復子の Refresh プロパティ設定は "deferred" です。ユースケースでは、「ifNeeded」に設定することをお勧めします。したがって、詳細 Web サービス (t2) の反復子に移動し、Refresh プロパティを ifNeeded に設定します。これで問題が解決します

フランク

于 2012-08-22T07:18:17.630 に答える