WebSphere Application Server for i5/OS, Version 6.1   
             オペレーティング・システム: i5/OS

             目次と検索結果のパーソナライズ化

ページの起動

通常、コンソールのユーザーは、コンソール・ナビゲーション内のリンクを使用してページを起動します。 ただし、コンソール・モジュール内のポートレットも、Dynamic UI Manager API を使用して直接ページを起動します。

DynamicUI Manager API は、PropertyFactoryDynamicUIManagerFactoryService、および URLGeneratorFactoryService の 3 つのサービスによって提供されます。 これらのサービスを使用するには、ポートレットはまず、JNDI ルックアップを実行して PortletServiceHome オブジェクトを入手します。そのあとでこれを使用して、実際のサービス・インターフェース・オブジェクトを入手できます。 これは PortletContext サンプル内の GetApps ポートレットで示されています。 以下のコードは、ポートレットの init() メソッド内の try ブロック内に配置されています。

Context ctx = new InitialContext(com.ibm.portal.jndi.Constants.ENV);
// get propertyfactory service
propertyFactoryServiceHome = (PortletServiceHome)ctx.lookup("portletservice/com.ibm.portal.propertybroker.service.PropertyBrokerService");

if (propertyFactoryServiceHome == null)
   logger.log(Level.FINE, "no PropertyBrokerService propertyFactoryServiceHome");
else
   propertyFactoryService = 
      (PropertyFactory)propertyFactoryServiceHome.getPortletService(com.ibm.portal.propertybroker.service.PropertyBrokerService.class);
      
logger.log(Level.FINE, "propertyBrokerService="+propertyFactoryService);
// get dynamicUIManagerFactory service
dynamicUIManagerFactoryServiceHome = 
   (PortletServiceHome)ctx.lookup("portletservice/com.ibm.portal.portlet.service.DynamicUIManagerFactoryService");
if (dynamicUIManagerFactoryServiceHome == null)
   logger.log(Level.FINE, "no dynamicUIManagerFactoryService propertyFactoryServiceHome");
else
   dynamicUIManagerFactoryService = 
      (DynamicUIManagerFactoryService)dynamicUIManagerFactoryServiceHome.getPortletService(com.ibm.portal.portlet.service.DynamicUIManagerFactoryService.class);
      
logger.log(Level.FINE, "dynamicUIManagerFactoryService="+dynamicUIManagerFactoryService);
// get urlGeneratorFactory service
urlGeneratorFactoryServiceHome = 
   (PortletServiceHome)ctx.lookup("portletservice/com.ibm.portal.portlet.service.URLGeneratorFactoryService");
if (urlGeneratorFactoryServiceHome == null)
   logger.log(Level.FINE, "no urlGeneratorFactoryService propertyFactoryServiceHome");
else
   urlGeneratorFactoryService = 
      (URLGeneratorFactoryService) urlGeneratorFactoryServiceHome.getPortletService(com.ibm.portal.portlet.service.URLGeneratorFactoryService.class);
      
logger.log(Level.FINE, "urlGeneratorFactoryService="+urlGeneratorFactoryService);

ポートレットは、dynamicUICtrl インターフェースを使用して、新規ページのページ定義のオブジェクト ID を引き渡すことで、新規ページを起動することができます。 オブジェクト ID は、ページを起動するナビゲーション・エレメントの固有の名前で JNDI ルックアップを実行することによって、判別されます。 ナビゲーション・エレメントを起動することを計画している場合、ナビゲーション・ノードはレイアウト・エレメントを指している必要があります。 つまり、ナビゲーション・エレメントは layoutElementRef 属性を含んでいる必要があります。 addPage() メソッドはページ・インスタンスのオブジェクト ID を戻しますが、これはポートレットによって保管されて URL を作成しページを起動しなければなりません。 以下の PortletContext サンプルからの抜粋は、上記を行う方法を示しています。 ポートレット GetApps.java は、このコードを持つ launchPage() メソッドを組み込んでいます。

Context ctx;
ObjectID pageDefinitionID = null;
String pagename="com.ibm.isclite.portletcontext.navigationElement.B";
logger.log(Level.FINE, "launch page=" + pagename);

PortletSession ps  = request.getPortletSession(false);
try {
    ctx = new InitialContext();
    pageDefinitionID =(ObjectID)ctx.lookup("portal:uniquename/"+pagename);
} catch (NamingException ne) {
    return;
}
try {
    PropertyController cproperty = propertyFactoryService.createProperty(myconfig);
    PropertyController cproperty2 = propertyFactoryService.createProperty(myconfig);
       
    cproperty.setType("String");
    cproperty.setName("servername");
    cproperty2.setType("String");
    cproperty2.setName("appDeployed");
    PropertyValue[] propertyValues = new PropertyValue[2];
    propertyValues[0] = 
        propertyFactoryService.createPropertyValue(request, cproperty, serverName);
    propertyValues[1] = 
        propertyFactoryService.createPropertyValue(request, cproperty2, appDeployed);
       
    DynamicUICtrl dmanagerCtrl = 
       dynamicUIManagerFactoryService.getDynamicUICtrl(request, response, "isc.tasklaunch");
       
    ObjectID newPageID = 
        dmanagerCtrl.addPage(pageDefinitionID, null, propertyValues);
    
    RedirectURLGenerator urlGenerator = 
        urlGeneratorFactoryService.getURLGenerator(request, response);
       
    EngineURL redirectURL = urlGenerator.createPageURL(newPageID);
       
    response.sendRedirect(redirectURL.toString()); 
} catch  ...





関連情報
ほかのポートレットへのプロパティーの引き渡し
アプリケーション定義エレメント
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 5:46:14 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.base.iseries.doc/info/iseries/isc/launching.html