ポートレットの非表示
ビジネス・ユース・ケースとして、 isf-persona-config.json ファイル内のリソース許可または showPortlet 属性を使用して、アプリケーション内のポートレットを表示または非表示にすることができない場合があります。
カスタマイズ・フレームワークには、アプリケーションの実行時にポートレットを非表示にするかどうかを決定する機能が用意されています。 アプリケーション・ブートストラッピングの一部として、 isf.common.getHiddenPortletList マッシュアップが呼び出されます。これにより、非表示にする必要があるポートレットのリストが返されます。
カスタム・ロジックを実装するには、 isf-persona-config.json ファイルで showPortlet 属性と callShowPortletMashup 属性の両方を trueとして構成してから、 isf.common.getHiddenPortletList マッシュアップをオーバーライドします。 アプリケーション提供のマッシュアップ定義は、 com.ibm.isf.home.ISFGetHiddenPortlets カスタム・マッシュアップ・クラスを使用します。 カスタム Java™ クラスを新規クラスに置き換えます。
以下のサンプル・マッシュアップ定義は、オーバーライドされた後の
isf.common.getHiddenPortletList マッシュアップを示しています。<mashup
description="Get list of portlets to be hidden"
endpoint="EP_CONFIG" id="isf.common.getHiddenPortletList" mashuptype="XAPI"
skipDataProvider="false" transactional="true">
<classInformation name="com.ibm.isf.home.ISFGetListOfPortletsToHide"/>
<API Name="Dummy">
<Input>
<Dummy/>
</Input>
<Template>
</Template>
</API>
<APINamespace inputNS="isf.common.getHiddenPortletList_input"
outputNS="isf.common.getHiddenPortletList_output" />
<AlternateResourceIds>
<AlternateResourceId altResourceId="ISFSYS00001"/>
</AlternateResourceIds>
</mashup>注: サンプル・マッシュアップ定義では、
com.ibm.isf.home.ISFGetListOfPortletsToHide クラス名が使用されます。以下のサンプル・コードは、カスタム Java クラスを示しています。
public class ISFGetListOfPortletsToHide implements ISCUIMashup {
@Override
public Object execute(Object input, SCUIMashupMetaData mashup, SCUIContext ctx) {
Document doc = SCXmlUtil.createDocument("Portlets");
Element portletsElement = doc.getDocumentElement();
/*Custom logic to determine if portlets needs to be hidden*/
// Element portlet = SCXmlUtil.createChild(portletsElement, "Portlet");
// portlet.setAttribute("PortletTID", "pickOrderPortlet");
/* output format
<Portlets>
<Portlet PortletTID="pickOrderPortlet"></Portlet>
</Portlets>
*/
return portletsElement;
}
}注: カスタム・マッシュアップは、以下の形式で出力を返す必要があります。
<Portlets>
<Portlet PortletTID="pickOrderPortlet"></Portlet>
</Portlets>