この課題を始める前に、『課題 1.4: ユーザー情報の作成と編集用のページの作成』を完了していなければなりません。
この課題では、連携して動作する追加ポートレットを作成します。 この作成には、ソース・ポートレットからターゲット・ポートレットにデータを送信するための Click-to-Action メカニズムを使用します。 ソース・ポートレット (ListingSearch) はセッション Bean を使用して、オークション項目データをアクセスします。 ListingSearch ポートレットで特定ポートレットを見付けると、 ターゲットの ListingDetail ポートレットは検索で探し出された項目の詳細情報を表示します。 それぞれのケースで、最初にポートレットを作成する必要があります。
ListingSearch ポートレットを作成する方法は、以下のとおりです。
編集ペインに ListingSearchView.jsp が開きます。
ListingSearchView.jsp ファイルを Page Designer に開いて、 ListingSearch ページ用のデータ・ソースとしてセッション Bean データを追加する方法は、次のとおりです。
この課題のこのセクションでは、以下のステップを実施して Java ページ・コードを追加します。
以下のステップを使用して、呼び出しと結果をユーザー・インターフェースにバインドするための EJB 参照ロジックおよびコードを生成できます。
public String doListingFacadeLocalFindByTitleAction() { String title = getListingFacadeLocalFindByTitleParamBean().getTitle(); getSessionScope().put("title", title); try { listingFacadeLocalFindByTitleResultBean = getListingFacadeLocal().findByTitle(title); } catch (Exception e) { logException(e); } return null; }
public ListingFacadeLocalFindByTitleParamBean getListingFacadeLocalFindByTitleParamBean() { if (listingFacadeLocalFindByTitleParamBean == null) { listingFacadeLocalFindByTitleParamBean = new ListingFacadeLocalFindByTitleParamBean(); String title = (String)getSessionScope().get("title"); listingFacadeLocalFindByTitleParamBean.setTitle(title); } return listingFacadeLocalFindByTitleParamBean; }
public ItemData[] getListingFacadeLocalFindByTitleResultBean() { if (listingFacadeLocalFindByTitleResultBean == null) { String title = (String)getSessionScope().get("title"); if (title != null) { try { listingFacadeLocalFindByTitleResultBean = getListingFacadeLocal().findByTitle(title); } catch (Exception e) { logException(e); } } } return listingFacadeLocalFindByTitleResultBean; }
ListingDetail ポートレットを作成する方法は、以下のとおりです。
編集ペインに ListingDetailView.jsp ファイルが開きます。
ListingDetailView.jsp ファイルを Page Designer に開いて、 ListingDetail ページ用のデータ・ソースとしてセッション Bean データを追加する方法は、次のとおりです。
この課題のこのセクションでは、以下のステップを実施して Java ページ・コードを追加します。
以下のステップを使用して、呼び出しと結果をユーザー・インターフェースにバインドするための EJB 参照ロジックおよびコードを生成できます。
public String doListingFacadeLocalFindByIdAction() { Integer itemid = getListingFacadeLocalFindByIdParamBean().getItemid(); getSessionScope().put("itemid", itemid); try { listingFacadeLocalFindByIdResultBean = getListingFacadeLocal().findById(itemid); } catch (Exception e) { logException(e); } return null; }
public ListingFacadeLocalFindByIdParamBean getListingFacadeLocalFindByIdParamBean() { if (listingFacadeLocalFindByIdParamBean == null) { listingFacadeLocalFindByIdParamBean = new ListingFacadeLocalFindByIdParamBean(); Integer itemid = (Integer)getSessionScope().get("itemid"); listingFacadeLocalFindByIdParamBean.setItemid(itemid); } return listingFacadeLocalFindByIdParamBean; }
public ItemData getListingFacadeLocalFindByIdResultBean() { if (listingFacadeLocalFindByIdResultBean == null) { Integer itemid = (Integer)getSessionScope().get("itemid"); if (itemid != null) { try { listingFacadeLocalFindByIdResultBean = getListingFacadeLocal().findById(itemid); } catch (Exception e) { logException(e); } } } return listingFacadeLocalFindByIdResultBean; }
専門用語の「連携」 ポートレットは、情報を共用することで相互に対話するために、 ページのポートレット機能を参照します。 ポータル・ページの 1 つまたは複数の連携ポートレットは、ソース・ポートレットからの変更に自動的に対処できます。 この変更はこのソース・ポートレットのアクション、またはイベントによって起動されたものです。 このイベントのターゲットであるポートレットは、ユーザーがページにあるその他のポートレットで繰り返し変更したり、 アクションを起こしたりする必要がないように対処することができます。 連携動作を実装するために使用されるメカニズムは、Click-to-Action イベント と呼ばれています。
Click-to-Action イベントはソース・ポートレットのアイコンから起動できます。 このアイコンはアクションのためのターゲット・リストを含むポップアップ・メニューを表示します。 ユーザーは特定のターゲットを選択して、 プロパティー・ブローカーは対応するポートレット・アクションの書式で、 データをこのターゲットに送ります。 「Click-to-Action」デリバリー・メソッドを使用して、 ユーザーはデータをソース・ポートレットから 1 つまたは複数のターゲット・ポートレットに転送し、 ターゲットに対処させて結果を新しいビューに表示します。
ListingSearch と ListingDetail ポートレット間の連携動作をセットアップする方法は、次のとおりです。
注: 「Click-to-Action 出力プロパティー」オブジェクトを出力フィールド 上に
(この前後は不可) 確実にドロップしてください。
出力フィールドは長方形で、以下のように強調表示されて見えます。
.
(出力フィールドの選択を見るために、ダイアログ・ボックスを横方向に移動させることが必要な場合もあります。)
<h:outputText id="text3" value="#{varlistingFacadeLocalFindByTitleResultBean.itemid}" styleClass="outputText"> <f:convertNumber /> </h:outputText> <c2a:encodeProperty type="itemid" namespace="http://auctionportlet" name="itemid" value="#{varlistingFacadeLocalFindByTitleResultBean.itemid}"> </c2a:encodeProperty>強調表示の value 属性があることに注目してください。 この属性は、出力プロパティーがこのページに正しく追加されていないと欠落します。
上記ステップは ListingSearch をソース・ポートレットとして識別します。 続いて、ターゲット・ポートレットとして ListingDetail を使用可能にします。
Click-to-Action のソースが正しく識別されていることを検査するために、
プロジェクト・エクスプローラーのポートレット・デプロイメント記述子フォルダーに戻る。
ソース・ポートレット (ListingSearch) およびターゲット・ポートレット (ListingDetails) を示すアイコンの外観は、次のようです。
ListingSearch および ListingDetail ポートレットが意図したとおりに作動することを検査するには、 これらのポートレットをテスト環境で実行する必要があります。
このポートレットを実行する方法は、次のとおりです。
次の課題に進む前に、テスト環境サーバーの停止をお勧めします。
テスト環境サーバーを停止するには、「サーバー」ビューでこのサーバーだけを選択して、
「サーバーの停止」ツールバー・ボタン
をクリックします。
これで、 『課題 2.1: ポートレット・アプリケーションを表示するための新規ポータルの作成』を始める準備が完了しました。