0

バックグラウンド

次のようなフォームを作成するためにページにドロップできるViewObjectを(JDeveloper 11.1.2.3を使用して)作成しようとしています:


入力のないフォーム


フォーム パラメータは、カスタム レポート フレームワークに送信する必要があります。ViewObject では、特定の属性を List-of-Value セレクターにリンクするか、そのデータ型を ViewObject から自動的に取得する必要があります。開発者は、ViewObject をドラッグ アンド ドロップして機能的なフォームを作成できる必要があります。

これにより、フォームは ViewObject を使用して入力検証を実行できるようになり、List-of-Value オブジェクトも使用できるようになります。

問題

ViewObject をサポートするエンティティはありません。ViewObject を駆動する SQL はありません。ViewObject は、実際にはプログラムによるアクセスを必要とせず、静的リストでもありません。これは単に、検証ルールの対象となるパラメーターのコンテナーであることを意味しています。開発者がそのような ViewObject をフォームにドロップすると、入力フィールドが表示されないフォームが作成されます。


入力のあるフォーム


舞台裏のコードは次のようになります。

  <af:inputText value="#{bindings.ManagementCentre.inputValue}"
                label="#{bindings.ManagementCentre.hints.label}"
                required="#{bindings.ManagementCentre.hints.mandatory}"
                columns="#{bindings.ManagementCentre.hints.displayWidth}"
                maximumLength="#{bindings.ManagementCentre.hints.precision}"
                shortDesc="#{bindings.ManagementCentre.hints.tooltip}"
                id="report_P_MANAGEMENT_CENTRE">
  </af:inputText>
  <af:inputText value="#{bindings.ClinicServiceCentreName.inputValue}"
                label="#{bindings.ClinicServiceCentreName.hints.label}"
                required="#{bindings.ClinicServiceCentreName.hints.mandatory}"
                columns="#{bindings.ClinicServiceCentreName.hints.displayWidth}"
                maximumLength="#{bindings.ClinicServiceCentreName.hints.precision}"
                shortDesc="#{bindings.ClinicServiceCentreName.hints.tooltip}"
                id="report_P_CLINIC_SERVICE_CENTRE">
    <f:validator binding="#{bindings.ClinicServiceCentreName.validator}"/>
    </af:inputText>

送信ボタンのコードはマネージド Bean を実行してフォーム パラメータを抽出し、(レポート フレームワークを介して) レポートに渡します。

  <af:commandButton text="Run Report" id="submitReport">
    <af:fileDownloadActionListener method="#{reportBean.run}" />
  </af:commandButton>

質問

検証を実行できるが、データ ソースに基づく必要のない ViewObject を作成するにはどうすればよいでしょうか。

4

2 に答える 2

1

2 つのパラメーターを受け入れるメソッドを使用して単純な Java クラスを作成するだけです。Java クラスをデータ コントロールとして公開し、ページにドラッグしてパラメーター フォームを作成します。

その後、フィールドの LOV などを追加できます。 https://blogs.oracle.com/shay/entry/adding_lov_to_non_database

于 2013-01-29T22:52:30.240 に答える
0

解決

必ず:

  • 必要な属性を使用して、プログラムによるビューオブジェクトを作成します。
  • 検証ルールを使用してビューオブジェクトを構成します。
  • アプリケーションモジュールを構成します。
  • Webページフォームを作成します。
  • ページバインディングを更新して、新しい行を作成します。

ビューオブジェクトの作成

次のようにビューオブジェクトを作成します。

  1. 入力して新しいギャラリーControl+nを開きます。
  2. [オブジェクトの表示]を検索して選択します。
  3. [ OK]をクリックします。
  4. パッケージ名前表示名を適切に設定してください。
  5. データソースプログラマティックに設定します。
  6. [次へ]をクリックします。
  7. 「新規」をクリックして、意味のある属性名を指定します。
  8. [ OK]をクリックします。
  9. 残りの属性を追加します。
  10. [次へ]をクリックします。
  11. すべての属性に対して[更新可能]を[常に]に設定します。
  12. タイプを適切なデータタイプに設定します。
  13. [完了]をクリックします。

検証ルールの構成

検証ルールを次のように構成します。

  1. [属性]フィンガータブをクリックします。
  2. 目的の属性を選択します。
  3. [検証ルール]タブをクリックします。
  4. [検証ルール]セクション内の[ + ]アイコンをクリックします。
  5. 必要に応じてルール定義を設定します。
  6. 必要に応じてエラーメッセージを設定します。
  7. 繰り返して、必要な数の検証ルールを追加します。

この時点で、ビューオブジェクトが構成され、[値の一覧]タブを使用してクエリベースのLOVを参照できます。

アプリケーションモジュールの構成

アプリケーションモジュールを次のように構成します。

  1. アプリケーションのアプリケーションモジュールをダブルクリックします。
  2. データモデルのフィンガータブを選択します。
  3. ビューオブジェクトを使用可能なビューオブジェクトからデータモデルにシャトルします。
  4. 1つのサフィックスを削除します。
  5. アプリケーションを保存します。

注意:ビュー・オブジェクトが表示されていない場合は、JDeveloperを再起動してください。

Webページフォームを作成する

次のようにフォームのWebページを作成します。

  1. ビューオブジェクトの新しいJSFページを作成します。
  2. データコントロールを更新して、ビューオブジェクトインスタンスを表示します。
  3. ビューオブジェクトをページにドラッグアンドドロップします。
  4. [フォーム]»[ADFフォーム]を選択します。
  5. [送信ボタンを含める]をオンにします。
  6. [ OK]をクリックします。

Webページが作成されます。

ページバインディングを更新

ビューオブジェクトインスタンス用に作成された「行」がない限り、ビューオブジェクトの属性を変更することはできません。このメモリ内行の作成は、ページコンテンツが表示される前に行う必要があります。これを次のように実行します。

  1. データコントロールを展開して、ビューオブジェクトの操作を表示します。
  2. [作成]をフッターファセットにドラッグします。
  3. ADFボタンを選択します。
  4. ページを右クリックします。
  5. [ページ定義に移動]を選択します。
  6. [実行可能ファイル]の横にある[ +]をクリックします。
  7. invokeActionを選択します。
  8. [ OK]をクリックします。
  9. idを次のように設定します:create
  10. バインドの設定:作成
  11. [OK]をクリックします。
  12. 更新を次のように設定します:prepareModelIfNeeded
  13. すべてを救う。

検証が適用され、データ駆動型LOVを使用できます。

「作成」ボタンを削除します。

于 2013-01-30T19:09:51.153 に答える