uCosminexus Portal Framework ポートレット開発ガイド

[目次][用語][索引][前へ][次へ]


付録A.5 ユーザごとにパーソナライズするポートレット

ユーザごとにパーソナライズするポートレットを開発するには,ユーザ情報取得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.