uCosminexus Portal Framework ポートレット開発ガイド
業務ロジックが複雑な場合は,MVCモデルと呼ばれるアプローチでポートレットを開発します。
MVCモデルとは,業務ロジック(Model),表示(View),制御(Controller)に分けてアプリケーションを開発する考え方です。業務と画面デザインを分離して開発できるため,効率良く開発できます。
MVCモデルをポートレット開発にあてはめた場合,ModelにはBean/EJB,ViewにはJSP/HTML,Controllerにはデフォルトアクションモジュールを使用します。Controllerにデフォルトアクションモジュールを利用すると,ポータル統合画面と連携した画面を制御できます。
MVCモデルを次の図に示します。
図3-11 MVCモデル
- 図の説明
- Controllerは,リクエストのパラメタ(URLのパスやクエリなど)を基に,適切なModelのsetter/getter/業務メソッドを呼び出します。Modelは,データの保存/返却/業務処理をします。
- Controllerは,リクエストのパラメタやModelの状態を基に,適切なViewを選択し呼び出します。Viewは,Modelから必要なデータを取得し,画面を表示します。
ControllerとViewのサンプルを次に示します。
- <この項の構成>
- (1) Controllerの開発
- (2) Viewの開発
(1) Controllerの開発
- 手順
- デフォルトアクションモジュールを用いてControllerを開発します。
Controllerでは,リクエストのパラメタやModelの状態を基にViewへ渡すパラメタを決定します。デフォルトアクションモジュールからJSP(View)へのパラメタ渡しには,actionメソッドで渡されるrequestの属性を使用します。
- 注意事項
- 属性は,統合画面内の全ポートレットで共通に使用されます。そのため,属性の名前には,一意の名前を指定してください。
- 開発したデフォルトアクションモジュールの名前を,デプロイ定義ファイル(hportlet.xml)のconfig-param要素に設定します。
config-param要素の設定方法については,「8.3.3 ポートレットのデプロイ」を参照してください。
- Portal Managerでデプロイします。
ポートレットのデプロイについては,マニュアル「uCosminexus Portal Framework システム管理者ガイド」の「ポートレットの登録」の説明を参照してください。
- Controllerのサンプル
public class SampleControllerActionModule extends DefaultActionModule { public void action(HttpServletRequest req, HttpServletResponse res) { req.setAttribute("page", Controller(req)); } //コントローラ用メソッド public String Controller(HttpServletRequest req){ //Attributeにcontrollerがセットされていたら,Stringオブジェクトに変換する。 String ControllerParameter = (String)req.getParameter("controller"); // サイトのエンコーディングがShift_JISの場合,次の処理を行う。 ControllerParameter = new String(ControllerParameter.getBytes("iso-8859-1"),"Windows-31J"); //デフォルト表示用JSP名をセットする。 String JSPFILE = "default.jsp"; //クエリにNEWMAILが指定されている場合 if("NEWMAIL".equals(ControllerParameter)){ //JSP表示を行うJSP名を返却する。 return "newmail.jsp"; } //クエリにADDRESSが指定されている場合 else if("ADDRESS".equals(ControllerParameter)){ //JSP表示を行うJSP名を返却する。 return "address.jsp"; } return JSPFILE; } }
(2) Viewの開発
JSPを使用して,パラメタの値に応じて表示内容を切り替えるポートレットコンテンツを開発します。日立APIポートレットのサンプルソース(index.jsp)は,パラメタpageの値(default.jsp,newmail.jsp,address.jsp)に応じて表示内容を切り替えます。
- index.jsp
<hr>メールポートレットの画面<hr> <% // //デフォルトアクションモジュールが設定した属性を判断し,画面に表示するコンテンツを切り替えます。 // ここでは,pageというAttributeを参照し, 表示コンテンツをControlします。 String view = (String)request.getAttribute("page"); if (page != null) {%> <jsp:include page="<%= view %>" flush="true"/> <% }%>
- default.jsp
<hr> 初期状態の画面です。
- newmail.jsp
<hr> メールが到着した際の画面です。
- address.jsp
<hr> アドレス帳の画面です。
All Rights Reserved. Copyright (C) 2009, 2013, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2009, 2013, Hitachi INS Software, Ltd.