Oracle® Fusion Middleware Oracle WebLogic Administration Console の拡張 11gリリース 1 (10.3.1) B55554-01 |
|
戻る |
次へ |
この節では、Administration Console の JSP テンプレート、スタイル、およびユーザ入力コントロールを使用するポートレットを追加する方法について説明します。たとえば、以下のようなコンテンツを表示するポートレットを追加できます。
提供するリソースをまとめたテーブルを ContentBook
に表示し、ユーザが特定のリソースに移動したり、テーブルからリソースのアクションを呼び出したりできるようにする ( 図 2-5 に示した WebLogic Server テーブルの例を参照)。
ContentBook
にフォームを表示し、提供したリソースをユーザがモニタしたりコンフィグレーションしたりできるようにする。
図 7-1 にこのプロセスを示します。プロセスの手順、および各手順の結果については、表 7-1 を参照してください。以下の節では、各手順について詳しく説明します。
表 7-1 モデル MBean の開発タスクと結果
手順 | 説明 | 結果 |
---|---|---|
拡張内に表示する各テキスト文字列の名前/値ペアを格納したテキスト ファイルを作成する。 |
1 つまたは複数の |
|
フォームとテーブルを表示する WebLogic Server JSP タグでは、Apache Struts がコントローラ エージェントであることを前提としている。JSP タグは、Struts |
|
|
WebLogic Server には、JSP にインポートできる JSP テンプレートが用意されている。また、Administration Console で使用されているのと同じ UI コントロールを表示するための JSP タグ ライブラリも用意されている。 |
Administration Console のスタイルと構造に調和する JSP。 |
|
拡張の位置を定義する XML ファイルを作成する。 |
ポートレットを定義し、Struts ページ コントロールまたはブック コントロールを定義する |
|
6. 拡張のアーカイブとデプロイメント |
「コンソールの拡張のアーカイブとデプロイ」を参照してください。 |
拡張を格納した WAR ファイル。 |
注意 : 拡張をデプロイする前に、JSP をプリコンパイルする必要があります。 |
JSP で表示するテキスト文字列は、すべてメッセージ バンドルで定義することをお勧めします。メッセージ バンドルの作成の詳細については、「メッセージ バンドルの作成」を参照してください。
バンドルを JSP で使用するには、次の手順に従います。
JSTL fmt.tld
タグ ライブラリをインポートします。
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
バンドルの名前を宣言します。
<fmt:setBundle basename="bundle" var="current_bundle" scope="page"/>
bundle
はバンドルの名前です。
JSP に文字列を出力させる場合は、次の JSP タグを使用します。
<fmt:message key="property-name" bundle="${current_bundle}"/>
次に例を示します。
<fmt:message key="myextension.myTab.introduction" bundle="${current_bundle}"/>
WebLogic Server では、テキスト コントロール、チェック ボックス、ラジオ コントロールなどのさまざまな HTML 入力コントロールを表示できる <wl:form>
JSP タグを提供しています。フォームは、読み取り専用にすることも、ユーザ入力可能にすることもできます。ユーザ入力可能なフォームには、ビジネス レイヤで処理するためのフォーム データをユーザがポストできるように、ボタンを含める必要があります。
データをテーブル形式で表示する <wl:table>
JSP タグも提供されています。テーブル内の各行は、WebLogic Server インスタンス、アプリケーション、ログ メッセージなどの 1 つのエンティティを表します (図 7-2 を参照)。ハイパーテキスト リンクを表示するようにテーブル カラムをコンフィグレーションできます。ハイパーテキスト リンクを利用すると、ユーザはテーブル内の項目に関する詳細情報を表示するページに移動できます。HTML チェック ボックス コントロールを含むテーブル カラムを作成することもできます。ユーザがテーブル行のチェック ボックスを選択して送信ボタンをクリックすると、拡張ではその行全体に対応するビジネス ロジックを呼び出します。たとえば、チェック ボックスを使用して、ある行が表す項目を削除することができます。
これらのタグはいずれも、Apache Struts Action
および ActionForm
を使用して、ビジネス レイヤとプレゼンテーション レイヤの間でデータを渡します。
Apache Struts は ActionForm
Bean (フォーム Bean) をインスタンス化してデータを設定するための複数の方法をサポートしています。たとえば、フォームの各プロパティのゲッター メソッドとセッター メソッドを含む独自の具象 Java Bean をコーディングできます。また、Struts DynaActionForm
Bean を使用できます。この Bean では、Java Bean を動的にコンフィグレーションして、Struts コンフィグレーション ファイルで宣言されているプロパティを格納します。
Oracle JSP タグを使用して Administration Console にフォームを表示する場合は、Struts がサポートするいずれかの方法を使用して、フォーム Bean を作成してデータを設定できます (「例 : Struts ポートレットによるコンテンツの表示」の例では、カスタム Java Bean をコーディングする代わりに DynaActionForm
Bean を使用しています)。
どの方法を選択する場合でも、Java Bean には以下のプロパティを含める必要があります。
handle
。com.bea.console.handles.Handle
型、またはユーザが作成するカスタム Handle
クラス。
ポータル フレームワークはこのプロパティを使用して、ActionForm
Bean と、Bean にデータを設定するためのデータ ソース (MBean など) を関連付けます。「ActionForm と行 Bean のハンドル」を参照してください。
Oracle JSP タグを使用して Administration Console にテーブルを表示する場合は、2 つのフォーム Bean を作成する必要があります。1 つはテーブル内の行を表す Bean (行 Bean)、もう 1 つは行 Bean の集合を含む Bean (テーブル Bean) です。行 Bean の各プロパティはテーブル カラムとして表示されます。たとえば、図 7-2 では、各行 Bean インスタンスに name
, state
, health
、および listenPort
プロパティが含まれています。
行 Bean を作成するには、各プロパティを定義する具象 Java Bean を作成する必要があります。Struts DynaActionForm
Bean を使用して、Struts コンフィグレーション ファイルで宣言されているプロパティを動的に格納することはできません。
テーブル Bean を作成する場合は、Struts がサポートするいずれかの方法を使用して、フォーム Bean を作成してデータを設定できます。どの方法を選択する場合でも、テーブル Bean には以下のプロパティを含める必要があります。
content
。java.util.Collection
型でなければなりません。
これは行 Bean を格納するために使用する必要のあるプロパティです。
handle
。com.bea.console.handles.Handle
型、またはユーザが作成するカスタム Handle
クラス。
ポータル フレームワークでは、フォーム Bean とテーブル Bean でこのプロパティを宣言することを求めていますが、テーブル Bean の場合、このプロパティの有用性は限られています。通常、テーブル Bean は行 Bean の単なる集合です。行 Bean は基底のデータ ソースを公開しますが、テーブル Bean では公開されません。どの Action
クラスがテーブル Bean にデータを設定したかを追跡する必要がない限り、テーブル Bean のこのプロパティの値を設定する必要はありません (ただし、宣言する必要はあります)。「ActionForm と行 Bean のハンドル」を参照してください。
チェック ボックスのカラムを含むようにテーブルをコンフィグレーションする場合は (選択されたテーブル行 Bean に対して Struts Action
を呼び出すことができる)、テーブル Bean に次のプロパティを含める必要があります。
chosenContents
。プリミティブ型の配列または com.bea.console.handles.Handle
の配列。テーブル内のチェック ボックスの扱い方については、「 テーブルへのボタンとチェック ボックスの追加」を参照してください。
ActionForm
Bean または行 Bean のインスタンスをユニークに識別して、Bean と基底のデータソースの相関関係を確立するには、Handle
オブジェクトを作成、使用できます。Handle
オブジェクトは com.bea.console.handles.Handle
インタフェースを実装する Java オブジェクトです。
Apache Struts コントローラ サーブレットは HttpServletRequest
オブジェクトに Handle
オブジェクトを格納して、Struts Action、Beehive ページ フロー、または JSP で使用できるようにします。
Administration Console は、テーブル JSP 内の行 (図 7-2 を参照) を対応するコンフィグレーション JSP にリンクするときに Handle
オブジェクトを使用します。たとえば、Server-0 という名前の ServerMBean
インタフェースの場合、Administration Console は Server-0 MBean のデータを行 Bean に設定します。Administration Console は Server-0 の JMX オブジェクト名を新しい Handle
オブジェクト(com.bea.console.handles.JMXHandle
型)に渡して、行 Bean の handle
プロパティの値として Handle
オブジェクトを設定します (図 7-3 を参照)。ユーザがテーブル JSP 内のリンクをクリックすると、Struts コントローラは行 Bean の handle
プロパティを確認し、handle
値を使用してどのサーバ インスタンスが選択されたのかを判断して、選択されたサーバのコンフィグレーション ページを表示します。
ActionForm
Bean または行 Bean の基底のデータ ソースが MBean である場合は、com.bea.console.handles.JMXHandle
オブジェクトを使用できます。Administration Console API リファレンスの JMXHandle を参照してください。
Bean の基底のデータ ソースが MBean でない場合は、com.bea.console.handles.Handle
インタフェースを実装する独自の Java クラスを作成できます。Administration Console API リファレンスのハンドルを参照してください。
Administration Console では、HTML フォームやテーブルを表示し、それらにデータを入力するために、Java Bean からデータをロードする JSP タグを使用します。通常、これらの Bean には、Struts Action
が WebLogic Server MBean からロードしたデータが格納されます。ユーザ入力を送信する場合、JSP タグは Struts Action
に転送します。転送されたほとんどの Action
は WebLogic Server MBean のデータを更新します。
Administration Console の JSP タグを使用する場合は、独自の Struts ActionForm
および Action
を作成する必要があります。
以下の節では、フォームやテーブルで使用するために Java Bean、Struts Action
および ActionForm
を作成する方法について説明します。
Apache Struts については、「The Apache Struts Web Application Framework」(http://struts.apache.org/
) を参照してください。
ビジネス レイヤとプレゼンテーション レイヤの JSP との間でデータを渡すための Struts 情報を作成するには、次の手順に従います。
Java Bean (フォーム Bean) にビジネス レイヤのデータを設定する org.apache.struts.action.Action
クラスを作成します。
ユーザ入力が可能なフォームの場合は、ユーザがフォームからポストするデータを処理するために別の Action
クラスを作成します。
「フォーム データを処理するための Struts Action クラスの作成」を参照してください。
Struts コンフィグレーション ファイルで次の手順を行います。
Action
クラスがデータを設定して使用するフォーム Bean の名前とプロパティを宣言します。
ユーザ入力が可能なフォームの場合は、同じフォーム Bean を使用して、フォームにデータを設定したり、データを処理する Action
クラスにユーザ入力を返したりできます。
Struts コントローラがフォーム Bean をインスタンス化して、フォームにデータを設定する Action
クラスを呼び出す際に使用する Action
マッピングを作成します。
ユーザ入力が可能なフォームの場合は、ユーザがフォームを送信したときに Struts コントローラが使用する別の Action
マッピングを作成します。
「Struts ActionForm および Action マッピングのコンフィグレーション」を参照してください。
フォーム データを処理する Struts Action
クラスを作成するには、次の手順に従います。
フォーム Bean にデータを設定する org.apache.struts.action.Action
クラスを作成します (コード リスト 7-1 を参照)。
Struts コントローラは Action
クラスに空の ActionForm
Bean を渡します。Bean にデータを設定するには、次のメソッドを実装します。
Action.execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
実装では次のことを行います。
基底のソース (MBean など) からデータを収集します。
空の ActionForm
Bean を DynaActionForm
Bean としてキャストします。
<form-bean>
要素で定義した各プロパティ (handle
プロパティを除く) に対して DynaActionForm.set()
メソッドを呼び出します。
たとえば、name
と totalRx
という 2 つのプロパティを定義している場合は、次のようになります。
DynaActionForm form = (DynaActionForm) actionForm; form.set("name",namefromMBean); form.set("totalRx",totalRxfromMBean);
フォーム Bean と基底のデータ ソースとの間に相関関係を確立するには、handle
プロパティの値を設定します(「ActionForm と行 Bean のハンドル」を参照してください。)
たとえば、基底のデータ ソースが MBean である場合は、JMXHandle
を使用し、handle
プロパティを MBean のObjectName
に設定します。
ObjectName anMBean = new ObjectName("com.bea.medrec:Type=com.bea.medrec.controller. RecordSessionEJBMBean,Name=MedRecEAR"); form.setHandle(new JMXHandle(anMBean));
クラスに渡されたリクエスト オブジェクトに DynaActionForm
Bean を格納します。
httpServletRequest.setAttribute("form-bean-name
", form);
form-bean-name
は コンフィグレーション ファイルでフォーム Bean に対してコンフィグレーションした名前に相当します(「Struts ActionForm および Action マッピングのコンフィグレーション」を参照)。
Action
クラスに渡された ActionMapping
オブジェクトの ActionMapping.findForward()
メソッドで「success」を返します。
return actionMapping.findForward("success");
ビジネス レイヤで処理するためのデータをフォームがポストする場合は、フォーム データを処理する別の Action
クラスを作成します。
ユーザが (HTML ボタンをクリックして) フォームからデータをポストすると、Struts コントローラはデータが設定された ActionForm
Bean を Action
クラスに渡します。データを処理するには、次のメソッドを実装します。
Action.execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
実装では次のことを行います。
リクエストに渡された ActionForm
Bean を DynaActionForm
Bean としてキャストします。
処理する各プロパティに対して DynaActionForm.get()
メソッドを呼び出します。
たとえば、name
、totalRx
、および handle
というプロパティを処理する場合は、次のようになります。
DynaActionForm form = (DynaActionForm) actionForm; String nameValue = (String) form.get(namefromMBean); Integer totalValue = (Integer) form.get(totalRxfromMBean); JMXHandle handle = (JMXHandle) form.get(handle);
データを処理します。
たとえば、name
および totalRx
プロパティが MBean の属性を表しており、この MBean 属性の値を変更する場合は、handle
プロパティを使用して MBean インスタンスの JMX オブジェクト名を取得し、次に JMX API を使用して MBean 属性にフォームからポストされた値を設定します。
ObjectName oName = handle.getObjectName(); MBeanServer.setAttribute(oName, new Attribute(("Name", nameValue)); MBeanServer.setAttribute(oName, new Attribute(("TotalRx", totalValue));
Action
クラスに渡された ActionMapping
オブジェクトの ActionMapping.findForward()
メソッドで「success」を返します。
return actionMapping.findForward("success");
Action クラスをコンパイルして、root-dir
/WEB-INF/classes
ディレクトリで始まるパッケージ構造に保存します。
コード リスト 7-1 は、カスタム MBean にアクセスし、その MBean を使用してフォーム Bean にデータを設定する org.apache.struts.action.Action
クラスの例です。
コード リスト 7-1 例 : フォーム Bean にデータを設定する Action クラス
import javax.management.MBeanServer; import javax.management.ObjectName; import javax.management.MalformedObjectNameException; import javax.naming.InitialContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.DynaActionForm; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class MedRecMBeanFormAction extends Action { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { try { // 実行時 MBean サーバへのローカル接続を確立する InitialContext ctx = new InitialContext(); MBeanServer server = (MBeanServer) ctx.lookup("java:comp/env/jmx/runtime"); // 実行時 MBean サーバに登録されたカスタム MBean に対応する // ObjectName を作成する ObjectName anMBean = new ObjectName( "com.bea.medrec:Type=com.bea.medrec.controller. RecordSessionEJBMBean,Name=MedRecEAR"); //カスタム MBean の「Name」属性の値を取得する String namefromMBean = (String)server.getAttribute (anMBean, "Name"); // カスタム MBean の「TotalRx」属性の値を取得する Integer totalRxfromMBean = (Integer) server.getAttribute (anMBean, "TotalRx"); // フォーム Bean にデータを設定する DynaActionForm form = (DynaActionForm) actionForm; form.set("name",namefromMBean); form.set("totalRx",totalRxfromMBean); form.set("handle",(new JMXHandle(anMBean))); // フォーム Bean をリクエスト内に設定する。フォーム Bean の // 名前は、Struts コンフィグレーション ファイルの「form-bean」名に // 一致しなければならない httpServletRequest.setAttribute("medrecMBeanEJBForm", form); } catch (Exception ex) { ex.printStackTrace(); } return actionMapping.findForward("success"); } }
ActionForm
と Action
マッピングを宣言する Struts コンフィグレーション ファイルを作成するには、次の手順に従います。
コード リスト 7-2 のコードをコピーして、Struts モジュールのコンフィグレーション ファイルに貼り付けます。
コンフィグレーション ファイルをまだ作成していない場合は、root-dir
/WEB-INF
にテキスト ファイルを作成します(「拡張のディレクトリ ツリーの作成」を参照)。ファイル名は struts-auto-config-
module
.xml
.にします。
module
は、Struts モジュールに付けた名前です。名前の衝突を避けるため、会社名を使用することをお勧めします。デフォルトの Struts モジュールは Oracle Action および ActionForm 用に予約されているため、独自の Struts モジュールを作成する必要があります。Struts モジュールの詳細については、Apache Struts の『User Guide』(http://struts.apache.org/struts-doc-1.2.x/userGuide/index.html
) を参照してください。
ビジネス レイヤからプレゼンテーション レイヤの JSP にデータを転送するために Struts が使用するフォーム Bean をコンフィグレーションするには、コード リスト 7-2 の以下の値を置き換えます。
form-bea-name
。DynaActionForm
bean のこのインスタンスに割り当てるユニークな名前です。Action
クラスは、Bean にデータを設定して Struts コントローラに返すときに、この Bean 名を参照します。
Bean インスタンスにデータを設定するときに使用する Struts Action
の名前が反映された名前を使用してください。
フォーム Bean にデータを設定するために Struts が使用する Action
マッピングをコンフィグレーションするには、Bean をシリアライズして、HTTP リクエストに格納し、そのリクエストを JSP に転送します。コード リスト 7-2 の以下の値を置き換えます。
action-name
Action
マッピングに割り当てるユニークな名前です。.portlet
ファイルはこの Action
名を参照します。
custom-Action-class。
フォーム Bean にデータを設定するために作成する Java クラスの完全修飾名です。このクラスの作成方法は手順 5 で説明します。
form-jsp.jsp。
フォームを表示するために作成する JSP の名前です。「フォーム JSP の作成」を参照してください。
ビジネス レイヤで処理するためのデータをフォームからポストする場合は、別の <action>
要素を作成して、フォーム データを処理するために作成するカスタム クラスを指定します。
この 2 番目の<action>
要素の form-bean-name
には、フォームに最初にデータを設定した同じフォーム Bean を使用できます。処理用にデータのサブセットのみをポストする場合は、同じフォーム Bean を使用する代わりに、処理すべきプロパティのみを定義した別のフォーム Bean をコンフィグレーションできます。
処理に成功すると、この追加の <action>
要素は、前述の手順でコンフィグレーションした Action
マッピングに転送できます。更新後のデータで JSP が再ロードされます。
コード リスト 7-2 Struts コンフィグレーション ファイルのテンプレート
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "struts-config_1_1.dtd"> <struts-config> <form-beans> <form-bean name="form-bean-name" type="org.apache.struts.action.DynaActionForm"> <form-property name="handle" type="com.bea.console.handles.Handle"/> <!-- insert additional "form-property" elements here --> </form-bean> </form-beans> <action-mappings> <action path="/action-name" type="custom-Action-class" name="form-bean-name" scope="request" validate="false"> <forward name="success" contextRelative="true" path="/ext_jsp/form-jsp.jsp"/> </action> <!-- insert additional "action" elements here --> </action-mappings> <message-resources parameter="global"/> <message-resources parameter="validationmessages" key="VALIDATIONMESSAGES"/> <message-resources parameter="genresources" key="GENRESOURCES"/> <message-resources parameter="global" key="GLOBAL"/> </struts-config>
WebLogic Server <wl:table>
JSP タグを使用する JSP 用の Java 行 Bean、Struts Action
、および ActionForm
を作成するには、次の手順に従います。
行 Bean として機能する Bean をコンフィグレーションするには、テーブルに表示するデータ項目ごとに 1 つのプロパティを含む標準の Java Bean を作成します。
Java bean をコンパイルして、root-dir
/WEB-INF/classes
ディレクトリで始まるパッケージ構造に保存します。
テーブル Bean として機能する Bean をコンフィグレーションするには、次の手順に従います。
コード リスト 7-2 のコードをコピーして、Struts モジュールのコンフィグレーション ファイルに貼り付けます。
コンフィグレーション ファイルをまだ作成していない場合は、root-dir
/WEB-INF
にテキスト ファイルを作成します(「拡張のディレクトリ ツリーの作成」を参照)。ファイル名は struts-auto-config-
module
.xml
にします。
module
は、Struts モジュールに付けた名前です。名前の衝突を避けるため、会社名を使用することをお勧めします。デフォルトの Struts モジュールは Oracle Action および ActionForm 用に予約されているため、独自の Struts モジュールを作成する必要があります。Struts モジュールの詳細については、Apache Struts の『User Guide』(http://struts.apache.org/userGuide/index.html
) を参照してください。
コード リスト 7-2 の以下の値を置き換えます。
form-bea-name
。DynaActionForm
bean のこのインスタンスに割り当てるユニークな名前です。Action
クラスは、Bean にデータを設定して Struts コントローラに返すときに、この Bean 名を参照します。
Bean インスタンスにデータを設定するときに使用する Struts Action
の名前が反映された名前を使用してください。
以下のプロパティを追加します。
<form-property name="contents" type="java.util.Collection"/>
このプロパティには、Action
クラスがインスタンス化してデータを設定する行 Bean の集合が含まれています。
行 Bean とテーブル Bean にデータを設定するために Struts が使用する Action
マッピングをコンフィグレーションするには、Bean をシリアライズして、HTTP リクエストに格納し、そのリクエストを JSP に転送します。コード リスト 7-2 の以下の値を置き換えます。
action-name
Action
マッピングに割り当てるユニークな名前です。.portlet
ファイルはこの Action
名を参照します。
custom-Action-class
行 Bean とテーブル bean にデータを設定するために作成する Java クラスの完全修飾名です。このクラスの作成方法は手順 5 で説明します。
form-jsp.jsp
テーブルを表示するために作成する JSP の名前です。「フォーム JSP の作成」を参照してください。
行 Bean とテーブル Bean にデータを設定する org.apache.struts.action.Action
クラスを作成します (コード リスト 7-3 を参照)。
Bean にデータを設定するには、次のメソッドを実装します。
Action.execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
実装では次のことを行います。
基底のソース (MBean のインスタンスなど) からアプリケーション データを収集します。
行 Bean のインスタンスを作成し、Bean の各プロパティに対するセッターを呼び出して、インスタンスにデータを設定します。
すべての行 Bean インスタンスを ArrayList
に割り当てます。
空の ActionForm
Bean (テーブル Bean) を DynaActionForm
Bean としてキャストします。
行 Bean の ArrayList
を格納するように、テーブル Bean の content
プロパティを設定します。
DynaActionForm table = (DynaActionForm) actionForm; table.set("contents",rowBeanArray);
クラスに渡されたリクエスト オブジェクトにテーブル Bean を格納します。
httpServletRequest.setAttribute("table-bean-name", table);
table-bean-name
は Struts コンフィグレーション ファイルでテーブル bean に対してコンフィグレーションした名前です (コード リスト 7-2 を参照)。
Action
クラスに渡された ActionMapping
オブジェクトの ActionMapping.findForward()
メソッドで「success」を返します。
return actionMapping.findForward("success");
Action
クラスをコンパイルして、root-dir
/WEB-INF/classes
ディレクトリで始まるパッケージ構造に保存します。
コード リスト 7-3 例 : 行 Bean とテーブル Bean にデータを設定する Action クラス
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.Set; import javax.management.MBeanServer; import javax.management.ObjectName; import javax.management.MalformedObjectNameException; import javax.naming.InitialContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.DynaActionForm; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class RetrieveCustomMBeansAction extends Action { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { try { // 実行時 MBean サーバへのローカル接続を確立する InitialContext ctx = new InitialContext(); MBeanServer server = (MBeanServer) ctx.lookup("java:comp/env/jmx/runtime"); // すべての MedRec EJB MBean の名前パターンを作成する ObjectName namepattern = new ObjectName("com.bea.medrec:Type=com.bea.medrec.controller. RecordSessionEJBMBean,*"); // すべてのアプリケーションのすべての MedRec EJB MBean を取得する Set objects = server.queryNames(namepattern, null); // これらの各 MBeans をウォークスルーし、オブジェクト名および // その TotalRX 属性の値を取得する Iterator i = objects.iterator(); while (i.hasNext()) { ObjectName anMBean = (ObjectName) i.next(); String identifier = anMBean.toString(); Integer totalRxfromMBean = (Integer) server.getAttribute(anMBean, "TotalRx"); // 行 Bean をインスタンス化する MedRecMBeanTableBean row = new MedRecMBeanTableBean(anMBean); // 行 Bean のプロパティを設定する row.setCanonicalName(anMBean.getCanonicalName()); row.setTotalRxinTableBean(totalRxfromMBean); // 各行 Bean を ArrayList に追加する result.add(row); } } catch (Exception ex) { ex.printStackTrace(); } // テーブル Bean をインスタンス化する DynaActionForm form = (DynaActionForm) actionForm; // 行 Bean の配列をテーブル Bean の「contents」プロパティの値として // 設定する form.set("contents",result); // テーブル Bean をリクエスト内に設定する。テーブル Bean の // 名前は Struts コンフィグレーション ファイルの「form-bean」名に // 一致しなければならない httpServletRequest.setAttribute("genericTableForm", form); return actionMapping.findForward("success"); } }
Administration Console JSP 内のほとんどのポートレットは、tableBaseLayout_netui
および configBaseLayout_netui
テンプレートをベースにしています。
以下の節では、これらのテンプレートを使用して JSP を作成する方法について説明します。
表 7-2 では、Administration Console の拡張で使用できる JSP テンプレートについて説明します。すべてのテンプレートは、Administration Console の WEB-INF
ディレクトリ内にある /layouts
ディレクトリに格納されています。テンプレートの詳細については、JSP ファイルを開き、ファイルの先頭にあるコメントを読みます。
テンプレートがニーズに合わない場合は、独自のテンプレートを作成し、JSP 内に直接コンテンツを構造化できます。
表 7-2 Administration Console の JSP テンプレート
テンプレート | 用途 |
---|---|
assistantBaseLayout_netui.jsp |
コンソール内のすべての標準アシスタント JSP 。 |
assistantFormAndTableLayout_netui.jsp |
テーブルを含むコンソール内のすべての標準アシスタント JSP 。 |
configBaseLayout_netui.jsp |
コンソール内のすべての標準コンフィグレーション フォーム JSP 。 |
configBaseLayoutNoTransact.jsp |
コンソール内のすべての非トランザクション コンフィグレーション フォーム JSP 。 |
configBaseLayoutWithButtons_netui.jsp |
ボタン バーに追加のボタンがあるコンソール内のすべての標準コンフィグレーション フォーム JSP。 |
configIntroLayout_netui.jsp |
テキストのみがある単純なページ。 |
configNoFieldsLayout_netui.jsp |
すべての情報があるページ。 |
configNoTransactAndTables_netui.jsp |
表を4つまでおよび非トランザクションのコンフィグレーションを含むページ。 |
filterAndTableLayout_netui.jsp |
上にフィルタがあるテーブルを含むすべてのページ。 |
formAndTableLayout_netui.jsp |
テーブルも含むコンフィグレーション フォーム JSP。 |
formWithButtonsLayout_netui.jsp |
ボタン バーがあるフォーム ページ。ただし、このフォーム ページは、Configuration Manager のロック処理に一切参加しません。 |
fourTablesLayout_netui.jsp |
4つ のテーブルがあるすべてのテーブルページ。 |
standalone_layout.jsp |
スタンドアロン ページつまり、コンソール Portal 外部のページ |
summarypage.jsp |
すべての概要ページ |
tableBaseLayout_netui.jsp |
Administration Console では、単一のテーブルを表示するすべての JSP でこのテンプレートを使用する。 |
tableBaseMonitoringLayout.jsp |
テーブル更新機能を含むすべての単一のテーブルのページ |
tablePreferencesLayout.jsp |
非推奨。 |
threeTablesLayout_netui.jsp |
3 つのテーブルがあるすべてのテーブル ページ |
twoTablesLayout_netui.jsp |
2 つのテーブルがあるすべてのテーブル ページ |
twoTablesWithButtonsLayout.jsp |
2 つのテーブルとボタン バーがあるページ |
フォーム JSP を作成する前に、ビジネス レイヤと JSP の間でデータを渡す Struts 情報を作成します。「フォーム JSP の Struts 情報の作成 : 主な手順」を参照してください。
フォーム JSP を作成するには、次の手順に従います。(コード リスト 7-4 を参照)。
JSP を作成して、開発用ディレクトリ内に保存します。拡張内のすべての JSP を格納するサブディレクトリを作成することをお勧めします。たとえば、root-dir
/jsp
を作成します。root-dir
は開発用のディレクトリです。詳細については、「開発環境の設定」を参照してください。
以下のタグを含めて JSP タグ ライブラリをインポートします。
<%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="beehive-template" %>
これらのタグ ライブラリについては、「JSP タグ ライブラリ」を参照してください。
(省略可能) ローカライズされたテキストを <fmt:message>
タグを使用して表示する予定がある場合は、<fmt:setBundle/>
を使用してメッセージ バンドルの名前を指定します。
この <fmt:setBundle/>
タグを使用すると、一度バンドル名を指定すれば、変数を使用して <fmt:message>
タグからこの値を参照できます。
次の開始タグを作成して、コンフィグレーション ページの JSP テンプレートを宣言します。
<beehive-template:template templatePage="/layouts/configBaseLayoutNoTransact.jsp">
このタグはまだ閉じないでください。フォーム JSP の他の JSP タグは、すべてのこのテンプレート タグ内にネストします。
注意 : フォームで WebLogic Server MBean の属性を変更する場合は、代わりに configBaseLayout_netui.jsp テンプレートを使用してください。「JSP タグ ライブラリ」を参照。 |
<beehive-template:section name="configAreaIntroduction">
タグを作成します。このタグの中に、フォームの概要を説明する文章を入力します。この説明は、フォームの上に表示されます。
次の開始タグを作成します。
<beehive-template:section name="form">
このタグはまだ閉じないでください。
次のタグを作成して、それ以降の JSP タグが XHTML を出力することを示します。
<html:xhtml/>
<wl-extension:template name="/WEB-INF/templates/form.xml">
開始タグを作成します。
このテンプレートは、Administration Console のコンフィグレーション ページ (たとえば [ドメイン : コンフィグレーション : 全般]) と調和するフォームを作成します。
このテンプレートでは、フォームを送信するボタンも生成されます。
<wl-extension:form>
開始タグを作成し、以下の属性の値を指定します。
action
。(省略可能) フォームがユーザ入力を受け付ける場合は、ユーザがこのフォームを送信するときに呼び出される Struts Action
のパスを指定します。Action
のパスを定義する Struts モジュールは、リクエスト内で指定されます。
bundle
。(省略可能) 列の見出しのローカライズ名を含むメッセージ バンドルの名前を指定します。
readOnly
。(省略可能) このフォームを読み取り専用にする (たとえば、読み取り専用のモニタ データを表示する) 場合は「true」を指定します。
フォームに表示するフォーム Bean のプロパティのそれぞれについて、表示するコントロールの種類に対応した <wl-extension>
タグを作成します (『WebLogic Server JSP Tags Reference』を参照)。
<wl-extension:checkbox>
<wl-extension:chooser-tag>
<wl-extension:hidden>
<wl-extension:password>
<wl-extension:radio>
<wl-extension:select>
<wl-extension:text>
<wl-extension:text-area>
これらのタグの代わりに、<wl-extension:reflecting-fields>
タグを使用することもできます。このタグは、フォーム Bean 内の各プロパティについて HTML 入力タグを生成します。たとえば、java.lang.String
を保持する Bean プロパティの場合はテキスト コントロールが生成され、ブール型のプロパティの場合はチェック ボックスが生成されます。このタグでは、リクエストにおいて JSP に渡されるデフォルトのフォーム Bean を使用します。
ユーザ入力を受け付けるフォームで、WebLogic Server MBean の属性は変更しない場合は、前述の手順で説明した <wl-extension>
タグ内に singlechange="false"
属性を指定してください。
この属性を使用すると、ユーザは WebLogic Server の編集セッションを開始せずにフォーム データをポストできます。
ユーザに対して各コントロールの目的を説明するテキストを表示するには、前の手順で作成した各 <wl-extension>
タグに inlineHelpId
属性を含めます。
<wl-extension:form>
タグ、<beehive-template:section>
タグ、および <beehive-template:template>
タグを閉じます。
コード リスト 7-4 例 : 単純なフォーム JSP
<%@ page language="java" %> <%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="beehive-template" %> <fmt:setBundle basename="mycompany" var="current_bundle" scope="page"/> <beehive-template:template templatePage="/layouts/configBaseLayoutNoTransact.jsp"> <beehive-template:section name="configAreaIntroduction"> <fmt:message key="mycompany.myresource.introduction" bundle="${current_bundle}"/> </beehive-template:section> <beehive-template:section name="form"> <html:xhtml/> <wl-extension:template name="/WEB-INF/templates/form.xml"> <wl-extension:form action="/MyCompanyMyResourceUpdated" bundle="core"> <wl-extension:text property="MyResourceName" labelId="mycompany.myresource.name.label" inlineHelpId="mycompany.myresource.name.label.inlinehelp" singlechange="false"/> <wl-extension:select property="MyResourceWidgets" labelId="mycompany.myresource.widgets.label" inlineHelpId="mycompany.myresource.widgets.label.inlinehelp" singlechange="false"> <wl-extension:optionsCollection property="MyResourceAvailableWidgets" label="label" value="value"/> </wl-extension:select> </wl-extension:form> </wl-extension:template> </beehive-template:section> </beehive-template:template>
テーブル JSP を作成する前に、ビジネス レイヤと JSP の間でデータを渡す Struts 情報を作成します。「テーブル JSP の Struts 情報の作成」を参照してください。
リソースをモニタするためのテーブル JSP を作成するには、次の手順に従います (例 7-5 を参照)。
JSP を作成して、開発用ディレクトリ内に保存します。拡張内のすべての JSP を格納するサブディレクトリを作成することをお勧めします。たとえば、root-dir
/ext_jsp
を作成します。root-dir
は開発用のディレクトリです。
注意 : /jsp というディレクトリ は予約されています。拡張のルート ディレクトリに jsp というディレクトリを含めることはできません。 |
詳細については、「開発環境の設定」を参照してください。
以下のタグを含めて JSP タグ ライブラリをインポートします。
<%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="beehive-template" %>
これらのタグ ライブラリについては、「JSP タグ ライブラリ」を参照してください。
(省略可能) ローカライズされたテキストを <fmt:message>
タグを使用して表示する予定がある場合は、<fmt:setBundle/>
を使用してメッセージ バンドルの名前を指定します。
この <fmt:setBundle/>
タグを使用すると、一度バンドル名を指定すれば、変数を使用して <fmt:message>
タグからこの値を参照できます。
次の開始タグを作成して、テーブルの JSP テンプレートを宣言します。
<beehive-template:template templatePage="/layouts/tableBaseLayout_netui.jsp">
このタグはまだ閉じないでください。テーブル JSP の他の JSP タグは、すべてのこのテンプレート タグ内にネストします。
<beehive-template:section name="configAreaIntroduction">
タグを作成します。このタグの中に、テーブルの概要を説明する文章を入力します。この説明は、テーブルの上に表示されます。
次の開始タグを作成します。
<beehive-template:section name="table">
このタグはまだ閉じないでください。
<wl-extensions:table>
開始タグを作成し、少なくとも以下の属性の値を指定します。
name
。このテーブル用にコンフィグレーションしたフォーム Bean の名前を指定します。
property
。行 Bean を格納するフォーム Bean プロパティの名前を指定します。
bundle
。(省略可能) 列の見出しのローカライズ名を含むメッセージ バンドルの名前を指定します。
captionEnabled
。(省略可能) テーブルの上にタイトルを表示する場合は「true」を指定します。
captionEnabled
属性に「true」を指定した場合は、<wl-extension:caption>
タグを作成します。このタグの中に、テーブルのタイトルを入力します。
テーブルに表示する行 Bean のプロパティのそれぞれについて <wl-extension:column>
タグを作成し、以下の属性の値を指定します。
property
。行 Bean プロパティの名前を指定します。
label
。列の見出しを表示するメッセージ バンドルのキーを指定します。
<wl-extension:table>
タグ、<beehive-template:section>
タグ、および <beehive-template:template>
タグを閉じます。
コード リスト 7-5 例 : モニタ用のテーブル JSP
<%@ page language="java" %> <%@ taglib uri="/WEB-INF/console-html.tld" prefix="wl-extension" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="beehive-template" %> <fmt:setBundle basename="core" var="current_bundle" scope="page"/> <beehive-template:template templatePage="/layouts/tableBaseLayout_netui.jsp"> <beehive-template:section name="configAreaIntroduction"> <fmt:message key="core.server.servertable.introduction" bundle="${current_bundle}"/> </beehive-template:section> <beehive-template:section name="table"> <wl-extension:table name="extensionForm" property="contents" captionEnabled="true" bundle="core"> <wl-extension:caption> <fmt:message key="server.table.caption" bundle="${current_bundle}"/> </wl-extension:caption> <wl-extension:column property="name" label="server.table.label.name"/> <wl-extension:column property="clusterName" label="server.table.label.cluster"/> <wl-extension:column property="machineName" label="server.table.label.machine"/> </wl-extension:table> </beehive-template:section> </beehive-template:template>
テーブル JSP では、各行からコンフィグレーション ページまたは他の関連ページへのリンクを提供できます。リンクのメカニズムでは Handle
オブジェクトを使用して、特定のテーブル行に関連しているページを判断します (「ActionForm と行 Bean のハンドル」を参照してください)。
以下のいずれかの JSP タグを使用して、テーブルからリンクさせることができます。
<wl:column-link>
。リンク先のページとポートレット インスタンスのラベルを指定する必要があります。ハンドルによって、ポートレットは選択された特定の行に関連するデータを表示します。
<wl:column-dispatch>
。メタデータを使用して、表示するページとポートレットを決定します。ページとポートレットのラベルを指定する代わりに、ページ宣言にメタデータ タグを追加し、メタデータ値を <wl:column-dispatch>
タグに指定します。メタデータを使用すると、リンクを損わずにページ ラベルを変更することができます。ハンドルも使用され、ページ内のポートレットは選択された特定の行に関連するデータを表示します。
この章では、ナビゲーション用のテーブル カラムの作成方法について説明します。
handle
プロパティを作成してデータを設定するには、次の手順に従います。
行 Bean に、データ型が com.bea.console.handles.Handle
で handle
という名前のプロパティを追加します。
public com.bea.console.handles.Handle getHandle() { return handle; } public void setHandle(Handle handle) { this.handle = handle; }
行 Bean にデータを設定する Struts Action
クラス内で、handle
プロパティの値を設定します。
行 Bean に MBean のデータを設定する場合は、その MBean の JMX ObjectName
を格納する com.bea.console.handles.JMXHandle
オブジェクトを作成します。次に、JMXHandle
オブジェクトを handle
プロパティの値として設定します。
javax.management.ObjectName anMBean = new ObjectName("com.bea.medrec:Type=com.bea.medrec.controller. RecordSessionEJBMBean,Name=MedRecEAR"); row.setHandle(new JMXHandle(anMBean));
その他の種類のデータ ソースのデータを行 Bean に設定する場合は、ObjectName
ではなくコンストラクタに String
を渡すことで、JMXHandle
オブジェクトを作成できます。String
には Type=
identifier
という文字シーケンスを含める必要があります。identifier
は分かりやすいものにします。
row.setHandle(new JMXHandle("Type=myDataSource"));
Handle
オブジェクトを作成して設定することもできます。Administration Console API リファレンスのハンドルを参照してください。
行 Bean と Action
クラスを再コンパイルします。
<wl:column-link>
タグを使用するには、次の手順に従います。
テーブル JSP の最上部に以下の文を追加して、render
タグ ライブラリをテーブル JSP にインポートします。
<%@ taglib uri="render.tld" prefix="render" %>
Oracle はこのタグ ライブラリを実行時環境で提供しています。
<wl:table>
タグ内に次の属性を追加します。
checkBoxValue="handle"
リンク元となるカラムを表示する <wl:column>
タグの中に、<wl:column-link>
JSP タグをネストします。
<wl:column-link portlet="portlet-instanceLabel"> <render:pageUrl pageLabel="page-definitionLabel"/> </wl:column-link>
各値の説明は次のとおりです。
portlet-instanceLabel。
リンク先のポートレット インスタンスのラベルです。
ラベルは <netuix:portletInstance>
要素の instanceLabel
属性で定義されています。この要素はポートレットが含まれるページの .book
ファイルにあります。
page-definitionLabel。
リンク先のポートレット インスタンスが含まれているページのユニークなラベルです。
ラベルは <netuix:page>
要素の definitionLabel
属性で定義されています。この要素はページの .book
ファイルにあります。
次に例を示します。
<wl:column property="Name" label="medrecMBean.name.label"> <wl:column-link portlet="medrecMonitorTabPortlet"> <render:pageUrl pageLabel="medrecMonitor"/> </wl:column-link> </wl:column>
注意 : <render:pageUrl/> タグは、ポータル フレームワーク URL を生成するためのコンビニエンス タグです。 |
<wl:column-dispatch>
タグを使用するには、次の手順に従います。
リンク先のページを定義する .book
ファイルで、そのページの <netuix:page>
要素を見つけて、以下の要素をネストします。
<netuix:meta name="perspective-name" content="ObjectType-value"/>
各値の説明は次のとおりです。
perspective-name。
分かりやすい名前を指定します。この値は、<wl:column-dispatch>
タグの perspective
属性で指定する値と一致する必要があります。たとえば、myCompany-configuration-page
と指定します。
ObjectType-value
。行 Bean の Handle
オブジェクトのObjectType
プロパティの値。Administration Console API リファレンスの Handle.getObjectType() を参照してください。
たとえば、行 Bean に MBean のデータを設定するとします。MBean の ObjectName
を使用して JMXHandle
オブジェクトを作成し、そのオブジェクトを行 Bean の handle
プロパティの値として設定します。MBean の ObjectName
が「com.mycompany:Name=myApp1,Type=myAppMBean
」である場合、JMXHandle.ObjectType
の値は myAppMBean
になります。
次に例を示します。
<netuix:meta name="myCompany-configuration-page" content="myAppMBean"/>
テーブル JSP の <wl:table>
タグ内に次の属性を追加します。
checkBoxValue="handle"
リンク元となるカラムを表示する <wl:column>
タグの中に、<wl:column-dispatch>
JSP タグをネストします。
<wl:column-dispatch perspective
="perspective-name"/>
各値の説明は次のとおりです。
perspective-name
。.book
ファイルで指定した perspective-name
値に一致します。
次に例を示します。
<wl:column property="Name" label="medrecMBean.name.label"> <wl:column-dispatch perspective="myCompany-configuration-page"/> </wl:column-link> </wl:column>
<wl:table>
タグを使用して作成するテーブルには、単独で、またはチェック ボックスやラジオ ボタンのカラムと組み合わせて、ボタンを使用できます。
単独で使用する場合、ボタンはページ UI コントロールへの転送を行えます。たとえば、WebLogic Server の [サーバ] テーブルでは (図 7-2 を参照)、ユーザが [新規作成] ボタンをクリックすると、[新しいサーバの作成] アシスタントが開きます。
チェック ボックスと組み合わせて使用する場合、ボタンは 1 つまたは複数のテーブル行のためにデータを処理できます。たとえば、テーブル内の各行が、アプリケーションのモニタ データを提供するカスタム MBean のインスタンスを表す場合、1 つまたは複数の行のチェック ボックスを選択してボタンをクリックすると、対応する MBean インスタンスの値がリセットされるようにすることができます。
以下の節では、チェック ボックスとボタンをテーブルに追加する方法について説明します。
テーブルにボタンを追加するには、次の手順に従います。
テーブル JSP で、<wl-extension:table>
タグに以下の属性を追加します。
singlechange="false" controlsenabled="true"
controlsenabled
属性を使用すると、テーブルにボタンを表示できるようになります。singlechange
属性は、ユーザがドメインのコンフィグレーションをロックせずにボタンをクリックできるようにします(WebLogic Server JSP タグ リファレンスを参照。)
<wl-extension:table>
開始タグの直後に、以下のタグを追加します。
<wl:button-bar> <wl:button-bar-button labelid="button-label" pageLabel="page-definitionLabel"/> </wl:button-bar>
各値の説明は次のとおりです。
button-label
。ボタン上に表示するテキスト、または、JSP の <fmt:setBundle>
要素で宣言されたバンドルで定義されているプロパティの名前です。
page-definitionLabel
。転送先のポートレット インスタンスが含まれているページのユニークなラベルです。
ラベルは <netuix:page>
要素の definitionLabel
属性で定義されています。この要素はページの .book
ファイルにあります。
たとえば、サーバ テーブル ページにリンクするには、次のように指定します。
<wl:button-bar> <wl:button-bar-button labelid="Servers" pageLabel="ServerTableBook" /> </wl:button-bar>
1 つまたは複数のテーブル行のデータを処理するには、チェック ボックスと、HTTP リクエストにデータをポストするためのボタンを使用します。ポストされたデータを取得して処理できる Struts Action
またはページ フローを作成する必要もあります。
1 つまたは複数のテーブル行のデータを HTTP リクエストにポストするには、次の手順に従います。
Struts コンフィグレーション ファイルで、テーブルの ActionForm
Bean の定義に chosenContents
というプロパティを追加します。
このプロパティのデータ型はプリミティブ型の配列か com.bea.console.handles.Handle
の配列にする必要があります。
<wls:table>
タグでは、ユーザがテーブルを送信するときに、選択された各チェック ボックスごとに 1 つの要素をこの配列に追加します。
次に例を示します。
<form-property name="chosenContents" type="[Lcom.bea.console.handles.Handle;"/>
テーブル JSP で、<wl-extension:table>
タグに以下の属性を追加します。
singlechange="false"
controlsenabled="true"
showcheckboxes="true"
checkBoxValue="property-name"
property-name
は行 Bean のプロパティの名前です。このプロパティのデータ型は、chosenContents
プロパティに対して宣言したデータ型と一致する必要があります。
<wl:table>
タグでは、この行 Bean の値を、テーブル Bean の chosenContents
プロパティの配列に追加します。
ラジオ ボタン (ユーザは 1 つの行のみを選択できる) を表示する場合は、次の属性を追加します。
singlechoice="true"
<wl-extension:table>
開始タグの直後に、以下のタグを追加します。
<wl:button-bar> <wl:button-bar-button labelid="button-label" portlet="portlet-instanceLabel" pageLabel="page-definitionLabel"/> </wl:button-bar>
各値の説明は次のとおりです。
button-label
。ボタン上に表示するテキスト、または、JSP の <fmt:setBundle>
要素で宣言されたバンドルで定義されているプロパティの名前です。
portlet-instanceLabel
。ユーザがボタンをクリックしたときに起動する Struts Action または Beehive ページ フローを含むポートレット インスタンスのラベルです。ラベルは <netuix:portletInstance>
要素の instanceLabel
属性で定義されています。この要素はポートレットが含まれるページの .book
ファイルにあります。
Action
またはページ フローをすぐに起動する代わりに、JSP を含むポートレットを指定することができます。JSP では、Action
またはページ フローを起動する前に、ユーザに確認を求めることができます。
page-definitionLabel
。転送先のポートレット インスタンスが含まれているページのユニークなラベルです。
ラベルは <netuix:page>
要素の definitionLabel
属性で定義されています。この要素はページの .book
ファイルにあります。
ポストされたデータを処理できる Struts Action
を作成するには、次の手順に従います。
Struts Action
に転送するポートレットを作成します。ポートレットの instanceLabel
が手順 1c で指定した値と一致するようにしてください。
次に例を示します。
<netuix:portletInstance markupType="Portlet" instanceLabel="medrecMonitor.Tab.Portlet" contentUri="/portlets/medrec_monitor_tab.portlet"/>
ポートレットの作成の詳細については、「ポートレットの定義」を参照してください。
Struts コンフィグレーション ファイルで、chosenContents
というプロパティを含む ActionForm
Bean を定義します。このプロパティのデータ型は、手順 1a で指定したデータ型と同じにする必要があります。
次に例を示します。
<form-bean name="processButtonForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="chosenContents" type="[Lcom.bea.console.handles.Handle;"/> </form-bean>
Struts コンフィグレーション ファイルで、ActionForm
Bean のデータを、処理を行う Java クラスに送信する Struts Action マッピングを定義します。
次に例を示します。
<action path="/ProcessButtonAction" type="com.bea.medrec.extension.MedrecMBeanButtonAction" name="processButtonForm" scope="request" validate="false"> <forward name="success" contextRelative="true" path="/ext_jsp/button_view.jsp"/> </action>
以下の手順では、テーブル行と基底の MBean データ ソースを関連付けて、その MBean の属性の値を消去するテーブルについて説明します。
テーブル JSP で、チェック ボックスを表示する <wl-extension:table>
タグをコンフィグレーションします。ある行のチェック ボックスをユーザが選択すると、その行 Bean の handle
プロパティの値がリクエスト オブジェクトにポストされることを指定します。
<wl-extension:table showcheckboxes="true" checkBoxValue="handle" ... >
行 Bean の handle
プロパティは JMXHandle
オブジェクトを格納します。このオブジェクトには、その行にデータが入力された MBean インスタンスの ObjectName
が含まれています。
ユーザが行を選択してボタンをクリックすると、ボタンはその行 Bean の JMXHandle
オブジェクトを、テーブル Bean の chosenContents
プロパティ内の配列に追加します。次に、テーブル Bean をポストします(図 7-4 を参照。)
Struts コントローラはテーブル Bean (Struts ActionForm
Bean) をシリアライズして、シリアライズした Bean を HTTP リクエスト オブジェクトに書き込みます。次に、そのリクエストを指定されたポートレットに転送します。
ポートレットは Struts Action
マッピングを起動します。Action マッピングは次のことを行います。
ActionForm
Bean を作成して、HTTP リクエストのデータをその Bean に設定します。
Action
クラスを呼び出して、ActionForm
Bean をそのクラスで使用できるようにします。
Action
クラスはフォーム Bean の chosenContents
配列 (JMXHandle
のインスタンスが格納されている) を反復処理します。配列内の要素ごとにクラスは、次のことを行います。
JMXHandle
オブジェクトに暗号化された MBean ObjectName
を取得します。
MBean をルックアップする際に.MBeanServer
を使用します。
MBeanServer
を使用して、属性値を消去する MBean オペレーションを呼び出します。
処理に成功すると、Action
マッピングは JSP に転送します。
図 7-4 例 : テーブルから Struts Action へのデータ フロー
<wl:table>
タグに属性を 1 つ追加すると、テーブルに表示されるテーブル カラムをユーザがコンフィグレーションできるようになります。Administration Console では、各ユーザのプリファレンスや、テーブルを表示するポートレットの各インスタンスのプリファレンスを永続化します。複数のポートレット インスタンスで 1 つのテーブルを再利用する場合、各ユーザは各ポートレット インスタンスのテーブルごとに異なるプリファレンスを設定できます。
テーブルに表示されるテーブル カラムのセットをユーザがコンフィグレーションできるようにするには、<wl:table>
タグに customize="true"
という属性を追加します。
次に例を示します。
<wl-extension:table customize="true" ... >
Administration Console がこのテーブルを含む JSP を表示する場合、テーブル タイトルの上に [このテーブルのカスタマイズ] リンクが表示されます。このリンクがある場合、テーブル JSP は選択コントロールと [適用] または [リセット] ボタンを含むセクションを表示します。
ポートレットをデスクトップに直接追加することもできますが、ポートレットを ContentBook
内のタブやサブタブとして表示する場合は、それを格納するブックまたはページを定義する必要があります。また、netuix-extension.xml
ファイルを作成する必要もあります。このファイルは、ポートレット、ブック、およびページの位置を指定し、拡張のデプロイメント記述子として機能します。
「ポートレットとナビゲーション コントロールの追加」を参照してください。