Oracle® Fusion Middleware Oracle Application Development FrameworkによるFusion Webアプリケーションの開発 12c (12.1.2) E48099-02 |
|
前 |
次 |
この章では、Fusion Webアプリケーションで、ADF Facesコマンド・コンポーネントとADFモデル・データ・バインディングを使用して、ADFビジネス・コンポーネントでカスタム・メソッドを起動する方法について説明します。具体的には、メソッドにパラメータを渡す方法、「データ・コントロール」パネルからメソッドをドラッグ・アンド・ドロップするときに作成される宣言メソッドをオーバーライドする方法など、ADF Facesコンポーネントを使用してADFビジネス・コンポーネント・クライアント・インタフェース・メソッドを起動する方法について説明します。
この章には次の項が含まれます:
基本的なページを作成してナビゲーション機能を追加すると、ページ間でパラメータを渡したり、宣言アクションをオーバーライドする機能を提供するなどの、より複雑な機能を追加できます。Oracle ADFには、このような複雑な機能を実際のコードをほとんど使用せずに追加できる機能が数多く用意されています。
この章で説明する実装メソッドのいくつかは、ページレベルの設計のためのものです。タスク・フローを使用することにより、同じ機能の多くを実行できます。詳細は、第20章「ADFタスク・フローの概説」を参照してください。
コマンド・コンポーネントを使用すると、パラメータの引渡し、宣言アクションのオーバーライド、なんらかのロジックの実行といったアクションを実行できます。「データ・コントロール」パネルでコマンド・コンポーネントをカスタム・メソッドにバインドできます。たとえば、deleteOrderItem()
というカスタム・メソッドがある場合、ボタンを作成してこのメソッドにバインドすると、ユーザーがこのボタンを押したときに注文項目を削除できます。
コマンド・コンポーネント内でsetPropertyListener
タグを使用して、イベント発生時に値を割り当てることもできます。たとえば、検索を開始して、マネージドBeanに保存されたパラメータ値に基づき、別のページ上に検索結果を表示するボタンを作成できます。setPropertyListener
プロパティを使用して、値をチェックするメソッドにこのパラメータ値を渡すことができます。
コマンド・コンポーネントにバインドされた宣言メソッドにコードを追加できます。たとえば、宣言的なCommit
ボタンを作成した後、マネージドBeanにコードを追加してから、追加処理用にCommit
操作をオーバーライドできます。
コマンド・コンポーネントの処理を開始する前に、その他のOracle ADF機能を理解しておくと役に立ちます。次に、関連する他の機能へのリンクを示します。
コマンド・コンポーネントとしてページに追加可能なカスタム・メソッドの作成の詳細は、13.7項「サービス・メソッドによるアプリケーション・モジュールのカスタマイズ」および13.9項「UIクライアントへのカスタム・サービス・メソッドの公開」を参照してください。
操作によるコマンド・コンポーネントの作成の詳細は、28.4.2項「操作を使用したコマンド・コンポーネント作成時の処理」を参照してください。
メソッド内でEL式を使用する場合は、28.4.2.3項「操作へバインドするために作成されるEL式」を参照してください。
コマンド・ボタンのactionListener
属性の詳細は、28.4.3項「実行時に行われる処理: アクション・イベントおよびアクション・リスナーの動作方法」を参照してください。
ADFバインディングの詳細は、第17章「Fusion WebアプリケーションでのADFモデルの使用」を参照してください。
タスク・フローを使用している場合、タスク・フローのパラメータ渡しメカニズムを使用できます。詳細は、第22章「タスク・フローのパラメータの使用」を参照してください。
タスク・フローのコール・メソッドの使用を検討している場合は、21.5項「メソッド・コール・アクティビティの使用」を参照してください。
マネージドBeanを使用する場合は、26.4項「Fusion WebアプリケーションでのマネージドBeanの使用」を参照してください。
アプリケーションにカスタム・メソッドが含まれている場合、これらのメソッドは「データ・コントロール」パネルに表示されます。これらのメソッドは、コマンド・ボタンとしてドラッグ・アンド・ドロップできます。ユーザーがボタンをクリックすると、メソッドが実行されます。
カスタム・メソッドの作成の詳細は、13.7項「サービス・メソッドによるアプリケーション・モジュールのカスタマイズ」および13.9項「UIクライアントへのカスタム・サービス・メソッドの公開」を参照してください。
たとえば、Oracle ADFのSummitサンプル・アプリケーションのItemsForOrder
ビュー・オブジェクトには、deleteOrderItem()
メソッドが含まれています。このメソッドは、ショッピング・カート内の項目を更新します。ユーザーがこのメソッドを実行できるようにするには、図30-1のように、「データ・コントロール」パネルからdeleteOrderItem()
メソッドをドラッグします。
要求されるビジネス・ロジックを実行するために、多くのメソッドでは、そのパラメータ(1つ以上)に対する値を必要とします。つまり、メソッドにバインドされたボタンを作成する際に、EL式を作成して、パラメータの値の取得元を指定する必要があります。たとえば、populateInventoryForProduct(String productId)
メソッドを使用する場合は、メソッド・アクション・バインディングを構成して製品IDを取得し、メソッドがそのIDを使用して製品のインベントリを表示できるようにする必要があります。
「データ・コントロール」パネルからフォームにカスタム・メソッドをドラッグすることにより、カスタム・メソッドにバインドされたコマンド・コンポーネントを作成します。
始める前に:
カスタム・メソッドについて理解しておくと役立ちます。詳細は、30.2項「メソッドを実行するためのコマンド・コンポーネントの作成」を参照してください。
また、他のコマンド・コンポーネントを使用して追加できる機能について理解しておくと役立ちます。詳細は、30.1.2項「コマンド・コンポーネントの追加機能」を参照してください。
次のタスクを完了する必要があります。
13.2項「アプリケーション・モジュールの作成と変更」の手順に従い、データ・モデルで必要なビュー・オブジェクトのインスタンスとカスタム・メソッドを含むアプリケーション・モジュールを作成します。または、別のタイプのビジネス・サービスを使用している場合は、『Oracle ADFデータ・コントロールによるアプリケーションの開発』のデータ・コントロールを使用したビジネス・サービスの公開に関する項で説明するように、そのビジネス・サービスのデータ・コントロールを作成します。
26.3項「Webページの作成」の説明に従って、JSFページを作成します。
カスタム・メソッドにバインドされたコマンド・コンポーネントを作成するには:
「データ・コントロール」パネルから、メソッドをページにドラッグします。
ヒント: 表またはフォームに含まれるデータを使用するメソッドのボタンをドロップする場合は、その表またはフォームの中にボタンをドロップする必要があります。 |
ポップアップ・メニューから「作成」>→「メソッド」>→「ADFボタン」を選択します。
メソッドがパラメータを取る場合は、「アクション・バインディングの編集」ダイアログが開きます。「アクション・バインディングの編集」ダイアログで、各パラメータの値を入力するか、「パラメータ」の「値」列で「EL式ビルダーの表示」メニュー選択をクリックし、EL式ビルダーを起動します。
メソッドをコマンド・ボタンとしてドロップすると、JDeveloperによって次の処理が行われます。
メソッドのメソッド・アクション・バインディングが定義されます。
メソッドがパラメータを取得する場合は、パラメータ値を保持するNamedData
要素が作成されます。
ADF Facesコマンド・コンポーネント用のコードがJSFページに挿入されます。
actionListener
を使用して、ボタンにメソッドをバインドします。
メソッド・コールからの戻り値を使用します。
JDeveloperはメソッドにアクション・バインディングを追加します。アクション・バインディングはRequiresUpdateModel
プロパティを使用して、アクションを実行する前にモデルを更新する必要があるかどうかを判別します。コマンド操作の場合、デフォルトではこのプロパティはtrue
に設定されています。つまり、ビュー・レイヤーでのすべての変更は、操作を実行する前にモデルに移動する必要があります。
パラメータを取得するメソッドをJSFページにドロップすると、メソッド・アクション・バインディングが作成されます。このバインディングにより、ユーザーがコマンド・コンポーネントをクリックしたときにメソッドが実行されるようになります。メソッドが実行するパラメータを要求する場合は、JDeveloperによって、各パラメータのNamedData
要素も作成されます。これらの要素は、メソッドのパラメータを表します。
たとえば、ADFタスク・フローのSummitサンプル・アプリケーションのpopulateInventoryForProduct(String)
メソッド・アクション・バインディングには、String
パラメータのNamedData
要素が含まれます。この要素は、アクション・バインディングの作成時に指定した値にバインドされます。例30-1に、populateInventoryForProduct(String)
メソッドをドロップし、String
パラメータ(productId
)を適切な変数にバインドしたときに作成されるメソッド・アクション・バインディングを示します。
例30-1 パラメータ・メソッドのメソッド・アクション・バインディング
<methodAction id="populateInventoryForProduct" RequiresUpdateModel="true" Action="invokeMethod" MethodName="populateInventoryForProduct" IsViewObjectMethod="true" DataControl="BackOfficeAppModuleDataControl" InstanceName="data.BackOfficeAppModuleDataControl.InventoryVO1"> <NamedData NDName="productId" NDType="java.lang.String"/> </methodAction>
JDeveloperはADF Facesコンポーネント用のコードをJSFページに追加します。28.4.2.3項「操作へバインドするために作成されるEL式」で説明されているとおり、このコードは、他のどのコマンド・ボタンのコードとも同じです。ただし、このボタンは、組込み操作に対するアクション・バインディングのexecute
メソッドではなく、ドロップされたメソッドに対するメソッド・アクション・バインディングのexecute
メソッドにバインドされます。
操作を使用してコマンド・ボタンを作成するときと同様に、メソッドを使用してコマンド・ボタンを作成すると、actionListener
属性を使用して、ボタンがメソッドに自動的にバインドされます。ボタンは、EL式を使用して、指定されたメソッドのアクション・バインディングのexecute
プロパティにバインドされます。このEL式により、アプリケーション・モジュールに対してバインディングのメソッドが起動します。コマンド・ボタンのactionListener
属性の詳細は、28.4.3項「実行時に行われる処理: アクション・イベントおよびアクション・リスナーの動作方法」を参照してください。
ヒント: アクション・バインディングの |
ナビゲーション操作のように、ボタンのdisabled
プロパティは、EL式を使用してボタンを表示するかどうかを決定します。例30-2に、コマンド・ボタンのpopulateInventoryForProduct(String)
メソッドへのバインドに使用されるEL式を示します。
例30-2 コマンド・ボタンをメソッドにバインドするためのJSFコード
<af:button actionListener="#{bindings.populateInventoryForProduct.execute}" text="populateInventoryForProduct" disabled="#{!bindings.populateInventoryForProduct.enabled}" id="b1"/>
ヒント: コマンド・ボタン・コンポーネントをページにドロップすると、以前にドロップされた同種のコンポーネントの数に基づいて自動的にIDが付けられます。たとえば、最初の2つのボタンの |
メソッド・コールからの戻り値を使用することもできます。例30-3に、文字列値を戻すカスタム・メソッドを示します。
例30-3 値を戻すカスタム・メソッド
/** * Custom method. */ public String getHelloString() { return ("Hello World"); }
例30-4に、コマンド・ボタンおよびoutputText
コンポーネントのJSFページのコードを示します。
例30-4 カスタム・メソッドをコールするコマンド・ボタン
<af:button actionListener="#{bindings.getHelloString.execute}" text="getHelloString" disabled="#{!bindings.getHelloString.enabled}" id="helloButtonId"/> <af:outputText value="#{bindings.return.inputValue}" id="helloOutputId"/>
ユーザーがコマンド・ボタンをクリックすると、カスタム・メソッドがコールされます。このメソッドは、outputText
コンポーネントの値として表示される文字列「Hello World」を戻します。
1つのページでのアクションに対して、アプリケーション機能を判別するためのパラメータを設定する必要が生じる場合があります。たとえば、あるページから別のページの結果表へ移動する検索ボタンを作成できます。ただし、結果表が表示されるのはパラメータ値がfalse
の場合のみです。
ページ間でこのパラメータを渡す場合やパラメータ値のチェックに使用するメソッドを含める場合には、マネージドBeanを使用できます。検索ページのレンダリング時にマネージドBeanがインスタンス化され、このBeanのメソッドによってこのパラメータがチェックされます。このパラメータがnull
の場合(ページが初めてレンダリングされる場合)は、値がtrue
に設定されます。
カスタム・メソッドの作成の詳細は、13.7項「サービス・メソッドによるアプリケーション・モジュールのカスタマイズ」および13.9項「UIクライアントへのカスタム・サービス・メソッドの公開」を参照してください。
type
プロパティがaction
に設定されたsetPropertyListener
コンポーネント(この検索を実行したコマンド・ボタンにネストされている)を使用してこのフラグがfalse
に設定されるため、検索の実行後に結果表が表示されるようになります。マネージドBeanの使用の詳細は、26.4項「Fusion WebアプリケーションでのマネージドBeanの使用」を参照してください。
setPropertyListener
コンポーネントを使用して、その他のオブジェクトの値を設定できます。このコンポーネントは、コマンド・コンポーネントの子である必要があります。
始める前に:
setPropertyListener
およびマネージドBeanを使用して値を設定する方法について理解しておくと役立ちます。詳細は、30.3項「コマンド・コンポーネントを使用したパラメータ値の設定」を参照してください。
また、他のコマンド・コンポーネントを使用して追加できる機能について理解しておくと役立ちます。詳細は、30.1.2項「コマンド・コンポーネントの追加機能」を参照してください。
次のタスクを完了する必要があります。
13.2項「アプリケーション・モジュールの作成と変更」の手順に従い、データ・モデルで必要なビュー・オブジェクトのインスタンスとカスタム・メソッドを含むアプリケーション・モジュールを作成します。または、別のタイプのビジネス・サービスを使用している場合は、『Oracle ADFデータ・コントロールによるアプリケーションの開発』のデータ・コントロールを使用したビジネス・サービスの公開に関する項で説明するように、そのビジネス・サービスのデータ・コントロールを作成します。
26.3項「Webページの作成」の説明に従って、JSFページを作成します。
setPropertyListenerコンポーネントを使用するには:
「アプリケーション」ウィンドウで、リスナーを追加するコマンド・コンポーネントを含むWebページをダブルクリックします。
ページの設計エディタで、コマンド・コンポーネントを右クリックして、「内部に挿入」ボタン→「ADF Faces」を選択します。
ADF Facesアイテムの挿入ダイアログで「プロパティ・リスナーの設定」を選択し、「OK」をクリックします。
「プロパティ・リスナーの設定の挿入」ダイアログの「選択元」フィールドにパラメータ値を入力します。
フィールドの右にカーソルを移動し、表示されるアイコンをクリックして、「式ビルダー」を選択すると、このフィールドの式ビルダーを表示できます。
「先」フィールドにパラメータのターゲットを入力します。
フィールドの右にカーソルを移動し、表示されるアイコンをクリックして、「式ビルダー」を選択すると、このフィールドの式ビルダーを表示できます。
ヒント: 作成されるページのページ定義ファイルに直接パラメータ値を設定するかわりに、マネージドBeanまたはスコープにパラメータ値を格納することを考慮してください。次のページに直接設定すると、それ以降、ナビゲーションを簡単に変更できなくなります。詳細は、26.4項「Fusion WebアプリケーションでのマネージドBeanの使用」を参照してください。また、バインディング・コンテナ内のデータは、コンテナが準備されたリクエスト中にのみ有効です。データを設定してから次のページがレンダリングされるまでの間に、データが変更される場合があります。 |
「タイプ」ドロップダウン・メニューから「アクション」を選択します。
「OK」をクリックします。
setPropertyListener
コンポーネントを使用すると、次のページに移動する前にコマンド・コンポーネントによって値が設定されます。渡す必要がある値のソースまたは実際の値をfrom
属性に設定すると、コンポーネントからその値へのアクセスが可能になります。to
属性をターゲットに設定すると、コマンド・コンポーネントによってターゲットに値が設定されるようになります。例30-5に、false
値を取得し、その値をsearchResults
マネージドBeanのinitialSearch
フラグの値として設定するコマンド・コンポーネントのJSFページのコードを示します。
ユーザーがコマンド・コンポーネントをクリックすると、移動する前に、setPropertyListener
コンポーネントによってパラメータ値が設定されます。例30-5では、setPropertyListener
はfalse
値を取得し、その値をsearchResults
マネージドBeanのinitialSearch
属性の値として設定しています。これで、レンダリングするかどうかを決定するためにこの値を認識する必要があるコンポーネントは、EL式#{searchResults.initialSearch}
を使用してアクセスできます。
操作またはメソッドをコマンド・ボタンとしてドロップすると、操作またはメソッドのexecute
メソッドに、そのボタンが自動的にバインドされます。ただし、既存のロジックの前または後に、ロジックの追加が必要になる場合もあります。
JDeveloperを使用すると、バインディング・コンテナにアクセスするマネージドBeanにメソッドおよびプロパティを新規作成することにより、宣言的操作にロジックを追加できます。デフォルトでは、この生成されたコードによって、操作またはメソッドが実行されます。その後、このコードの前か後にロジックを追加できます。元の操作またはメソッドのexecute
プロパティではなく、この新規メソッドにコマンド・コンポーネントが自動的にバインドされます。その後、ユーザーがボタンをクリックすると、新規メソッドが実行されます。
たとえば、Summit ADFタスク・フロー・サンプル・アプリケーションのCustomers.jsff
フラグメントでは、「新規」アイコンをクリックして、新規注文を作成できます。ただし、宣言的CreateInsert
操作には、追加処理が必要です。ボタンをクリックすると、注文の詳細を示す新規タブが表示される必要があります。この処理を提供するために、CustomersBackingBean
のマネージドBeanのcreateNewOrder
メソッドにロジックが追加されます。
宣言メソッドをオーバーライドするには、マネージドBeanにコマンド・コンポーネントがバインドされる新規メソッドを保持させる必要があります。ページにバッキングBeanが関連付けられている場合は、JDeveloperによって、バインディング・オブジェクトへのアクセスに必要なコードがバッキングBeanに追加されます。ページにバッキングBeanが関連付けられていない場合は、作成を促す指示が表示されます。
コマンド・コンポーネントを追加して、マネージドBeanを使用してその宣言メソッドをオーバーライドできます。
始める前に:
宣言メソッドのオーバーライド方法について理解しておくと役立ちます。詳細は、30.4項「宣言メソッドのオーバーライド」を参照してください。
また、他のコマンド・コンポーネントを使用して追加できる機能について理解しておくと役立ちます。詳細は、30.1.2項「コマンド・コンポーネントの追加機能」を参照してください。
次のタスクを完了する必要があります。
13.2項「アプリケーション・モジュールの作成と変更」の手順に従い、データ・モデルで必要なビュー・オブジェクトのインスタンスとカスタム・メソッドを含むアプリケーション・モジュールを作成します。または、別のタイプのビジネス・サービスを使用している場合は、『Oracle ADFデータ・コントロールによるアプリケーションの開発』のデータ・コントロールを使用したビジネス・サービスの公開に関する項で説明するように、そのビジネス・サービスのデータ・コントロールを作成します。
26.3項「Webページの作成」の説明に従って、JSFページを作成します。
注意: 現在、コマンド・コンポーネントの |
宣言メソッドをオーバーライドするには:
オーバーライドする操作またはメソッドをJSFページ上にドラッグし、UIコマンド・コンポーネントとしてドロップします。
コンポーネントが作成され、ActionListener
属性を使用してADFモデル・レイヤーの関連するバインディング・オブジェクトにバインドされます。
「データ・コントロール」パネルでメソッドを使用したコマンド・コンポーネントの作成の詳細は、30.2項「メソッドを実行するためのコマンド・コンポーネントの作成」を参照してください。
操作によるコマンド・コンポーネントの作成の詳細は、28.4.2項「操作を使用したコマンド・コンポーネント作成時の処理」を参照してください。
JSFページでコンポーネントをダブルクリックします。
「バインドActionプロパティ」ダイアログで、次のいずれかの方法で、バッキングBeanとコンポーネントのバインド先とするメソッドを指定します。
ページで自動バインディングが有効になっている場合(「JSFページの作成」ウィザードの「マネージドBean」タブにある「新規マネージドBeanでのUIコンポーネントの自動公開」を選択)、バッキングBeanがすでに選択されています。
新規メソッドを作成するには、「メソッド」フィールドにメソッドの名前を入力します。このフィールドには、最初にデフォルト名が表示されています。
または
既存のメソッドを使用するには、「メソッド」フィールドのドロップダウン・リストからメソッドを選択します。
「生成にADFバインディングを使用」を選択します。
そのページで自動バインディングが使用されていない場合は、既存のバッキングBeanから選択するか、新規作成できます。
「新規」をクリックして、新しいバッキングBeanを作成します。「マネージドBeanの作成」ダイアログで、Beanおよびクラスに名前を付け、Beanのスコープを設定します。
または
既存のバッキングBeanおよびメソッドをドロップダウン・リストから選択します。
図30-2に、メソッド・バインディングに対して指定されるマネージドBeanのメソッドを使用した「バインドActionプロパティ」ダイアログを示します。
注意: コマンド・コンポーネントに |
バッキングBeanおよびメソッドを識別したら、「バインドActionプロパティ」ダイアログで「OK」をクリックします。
ソース・エディタでマネージドBeanが開きます。例30-6に、Summit ADFタスク・フロー・サンプル・アプリケーションのBeanに挿入されるコードを示します。この例では、コマンド・ボタンがCreateInsert
操作にバインドされています。
例30-6 バインディング・オブジェクトへのアクセス用にバッキングBeanで生成されたコード
public void createNewOrder() { BindingContainer bindings = getBindings(); OperationBinding operationBinding = bindings.getOperationBinding("CreateInsert"); Object result = operationBinding.execute(); if (!operationBinding.getErrors().isEmpty()) { return null; } }
これで、例30-7に太字のコードを示すように、バインディング・オブジェクトにアクセスする前または後に、ロジックを追加できます。
例30-7 オーバーライド後のメソッドに追加されたコード
public void createNewOrder() {//This method is called when creating a new order
//to create the record and switch the tab
getSdi3().setDisclosed(false);
getSdi4().setDisclosed(true);
BindingContainer bindings = getBindings(); OperationBinding operationBinding = bindings.getOperationBinding("CreateInsert"); operationBinding.execute();AdfFacesContext adfFacesContext = AdfFacesContext.getCurrentInstance();
adfFacesContext.addPartialTarget(getSdi4());
}
処理ロジックに加えて条件付きロジックを記述し、複数の結果の中から1つを戻すこともできます。たとえば、処理中にエラーが発生した場合にはnull
を、処理が正常終了した場合は別の結果値を戻すことができます。null
の戻り値により、ナビゲーション・ハンドラはナビゲーション・ケースを評価せずに、そのまま現在ページを再表示します。
ヒント: 特定のナビゲーション・ケースをトリガーするには、メソッドによって戻される結果値が、ナビゲーション・ルールの結果値と(大/小文字も含めて)完全に一致する必要があります。 |
この時点で、コマンド・ボタンは、ActionListener
属性ではなく、Action
属性を使用して新しいメソッドにバインドされています。Action
属性の値(結果文字列など)がすでに存在していた場合は、その値が新規メソッドの戻りとして追加されます。値が存在していなかった場合は、戻りがnull
のままになります。
宣言メソッドをオーバーライドすると、JDeveloperにより、管理プロパティがバッキングBeanに追加され、この管理プロパティに値#{bindings}
(バインディング・コンテナへの参照)が設定されます。また、強く型付けされたBeanプロパティがBindingContainer
型のクラスに追加され、JSFランタイムにより、値として管理プロパティ式#{bindings}
が設定されます。また、JDeveloperはUIコマンド・アクション・メソッドにロジックを追加します。このロジックには、現在のバインディング・コンテナへのアクセスに使用されている、強く型付けされたgetBindings()
メソッドが含まれます。
このコードによって行われる処理は次のとおりです。
バインディング・コンテナにアクセスします。
関連付けられているメソッドのバインディングを検索し、実行します。
ナビゲーションに使用できるメソッドの戻り値を追加します。デフォルトでは、戻り値はnull
です。ボタンのAction
属性に結果文字列がすでに存在する場合は、その属性が戻り値として使用されます。このコードは、必要に応じて変更できます。
ActionListener
属性ではなく、Action
属性を使用して新しいメソッドにUIコマンド・コンポーネントがリバインドされます。例30-8に、CreateInsert
操作が宣言的にページに追加される場合のコードを示します。
例30-8 宣言メソッドにバインドされたコマンド・ボタンのJSFページ・コード
<af:button actionListener="#{bindings.CreateInsert.execute}" text="CreateInsert" disabled="#{!bindings.CreateInsert.enabled}"/>
例30-9に、ページのバッキングBeanのメソッドをオーバーライドした後のボタン・タブのコードを示します。ここでは、action
属性は、バッキングBeanのメソッドにバインドされています。
例30-9 オーバーライド後のメソッドにバインドされたコマンド・ボタンのJSFページ・コード
<af:button text="New" action="#{backingBeanScope.CustomersBackingBean.createNewOrder}"/>
ヒント: オーバーライド後のメソッドを使用するボタンをクリックすると、次のエラーが表示されます。
これは、オーバーライド後のメソッドを含むマネージドBeanのスコープが、 |