uCosminexus Portal Framework ポートレット開発ガイド
ユーザごとにパーソナライズするポートレットを開発するには,ユーザ情報取得Beanを使用します。ユーザ情報取得Beanの詳細は,「14.6 ユーザ情報取得Bean」を参照してください。ユーザごとにパーソナライズするには,リポジトリの設定が必要です。必要な設定については,マニュアル「uCosminexus Portal Framework システム管理者ガイド」の「ユーザ管理情報の検討」の説明を参照してください。
パーソナライズ情報は,リポジトリに保管されます。そのため,パーソナライズ情報はシリアライズできるオブジェクトに限られます。
パーソナライズするポートレットでは,編集画面を使用します。編集画面の遷移を次の図に示します。
図A-2 編集画面の遷移
ポータル全体で編集画面のインタフェースを統一するため,ポートレットの編集画面では,次の表に示すボタンおよび動作を実装します。
表A-2 ポートレットの編集画面でのボタンおよび動作
ボタン 必須 動作 適用 ○ パーソナライズ情報を更新して,再度編集画面を表示します。 戻る ○ パーソナライズ情報を更新しないでパーソナライズを終了します。終了後は,ポートレットのサマリ画面を表示します。 標準に戻す × システム管理者が設定した内容またはポートレットの初期設定に戻して,再度編集画面を表示します。
- (凡例)
- ○:必須
- ×:任意
パーソナライズするポートレットのサンプルを次に示します。
このサンプルには,メイン(main.jsp),サマリ(summary.jsp),コントローラ(controller.jsp),およびエディタ(edit.jsp)のファイルがあります。メインおよびサマリは,それぞれメイン画面用およびサマリ画面用のファイルです。コントローラは,ログインチェック,ロジックの呼び出し,および画面モードに応じてViewを呼び出します。エディタは,パーソナライズの結果を保存したり,編集画面を作成したりします。
- <この項の構成>
- (1) コントローラ(controller.jsp)
- (2) エディタ(edit.jsp)
(1) コントローラ(controller.jsp)
{PROJECT_HOME}\portlets\customize\controller.jsp
<%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="jp.co.hitachi.soft.portal.portlet.beans.PortletInfoBean" %> <%@ page import="jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean" %> <% String uri = "error.jsp"; try { PortletInfoBean pInfo = new PortletInfoBean(); pInfo.initBean(request); PortalUserInfoBean userInfo = new PortalUserInfoBean(); userInfo.setRequest(request); // ログイン済みかチェック if (userInfo.checkLoggedIn()) { PortletInfoBean.Mode mode = pInfo.getMode(); if (mode == PortletInfoBean.Mode.DEFAULT) { // ここにサマリ画面用業務ロジック呼び出しを追加する uri = "summary.jsp"; } else if (mode == PortletInfoBean.Mode.MAXIMIZE) { // ここに最大化画面用の業務ロジック呼び出し追加する uri = "main.jsp"; } else if (mode == PortletInfoBean.Mode.EDIT) { uri = "edit.jsp"; } } } catch (Exception ioe) { // エラーメッセージ出力 uri = "error.jsp"; } %> <!-- includeを用いたビューの呼び出し --> <jsp:include page="<%= uri %>" flush="true"/>
(2) エディタ(edit.jsp)
{PROJECT_HOME}\portlets\customize\edit.jsp
<%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="jp.co.hitachi.soft.portal.api.user.PortalUserInfoBean" %> <%@ taglib uri="http://soft.hitachi.co.jp/portal/standard" prefix="portal" %> <%@ taglib uri="http://soft.hitachi.co.jp/portal/urlutils" prefix="uu" %> <% String def1 = "default1"; String def2 = "defautl2"; String prop1, prop2; // プロパティ PortalUserInfoBean userInfo = new PortalUserInfoBean(); userInfo.setRequest(request); // 編集情報保存処理 String editType = request.getParameter("edittype"); // サイトのエンコーディングがShift_JISの場合,次の処理を行う。 editType = new String(editType.getBytes("iso-8859-1"),"Windows-31J"); if ("apply".equals(editType)) { // 適用ボタンの処理(POSTデータを参照し変更を適用) prop1 = request.getParameter("prop1"); prop2 = request.getParameter("prop2"); userInfo.setCustomizeInfo("prop1", prop1); userInfo.setCustomizeInfo("prop2", prop2); } else if ("restore".equals(editType)) { // デフォルトボタン(初期値に変更) prop1 = def1; prop2 = def2; userInfo.setCustomizeInfo("prop1", prop1); userInfo.setCustomizeInfo("prop2", prop2); } else { prop1 = (String)userInfo.getCustomizeInfo("prop1"); prop2 = (String)userInfo.getCustomizeInfo("prop2"); if (prop1 == null) { prop1 = def1; } if (prop2 == null) { prop2 = def2; } } %> <script type="text/JavaScript"> <!-- function returnHome() { document.location = "<portal:uriLookup type="Home" />"; } function restore() { document.editForm.edittype.value = "restore"; document.editForm.mysubmit.click(); } --> </script> <!-- コントローラ経由でPOSTする --> <uu:form name="editForm" action="controller.jsp" method="POST"> プロパティ1 <input type="text" name="prop1" value="<%= prop1 %>"> <br> プロパティ2 <input type="text" name="prop2" value="<%= prop2 %>"> <br> <p> <input type="hidden" name="edittype" value="apply"> <input type="submit" value="適用" name="mysubmit"> <input type="button" value="戻る" onclick="returnHome()"> <input type="button" value="標準に戻す" onclick="restore()"> </p> </uu:form>
All Rights Reserved. Copyright (C) 2009, 2013, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2009, 2013, Hitachi INS Software, Ltd.