この章では、ADFページ・フラグメントをOracle Identity Managerセルフ・サービスに追加する機能について説明します。
セルフ・サービスでの複雑なカスタマイズを有効にするには、セルフ・サービスの「タスク」セクション、「リクエスト」セクションおよび「プロファイル」セクションの右側に最上位タブを追加します。これを行うには、次の手順を実行します。
UIカスタマイズの新規.jsffフラグメントを作成します。
ADFでは、個別のファイルを.jspxファイルに埋め込むdeclarativeComponentタグが提供されます。このタグを使用して、カスタム・ページ・フラグメントをSelf.jspxに埋め込みます。カスタム・ファイルは、/web/pageFragments/ディレクトリのiam-consoles-faces.warにある必要があります。たとえば、/web/pageFragments/custom/Custom.jsffとなります。
次に、ページ・ヘッダーとともに簡単な開始例を示します。
<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
xmlns:f="http://java.sun.com/jsf/core">
<jsp:directive.page contentType="text/html;charset=utf-8"/>
<af:componentDef>
<af:panelStretchLayout id="psl1a" topHeight="auto" startWidth="0px"
endWidth="0px" bottomHeight="0px">
<f:facet name="bottom"/>
<f:facet name="start"/>
<f:facet name="end"/>
<f:facet name="top">
<af:panelHeader id="ph1a" size="-1" text="">
<f:facet name="context">
<af:outputText value="Customize Fragment" id="ot2a" inlineStyle="font-size:15px"/>
</f:facet>
<f:facet name="menuBar"/>
<f:facet name="toolbar"/>
<f:facet name="legend">
<af:separator id="s2a"/>
</f:facet>
<f:facet name="info"/>
</af:panelHeader>
</f:facet>
</af:panelStretchLayout>
</af:componentDef>
</jsp:root>
UIカスタマイズのマネージドBeanを作成し、別の.jarファイルでBeanをコンパイルして、このBeanをiam-consoles-faces.warに追加します。
|
注意: 通常、JavaServer Facesアプリケーションには、ページで使用されるUIコンポーネントに関連付けられているJavaBeansコンポーネントであるマネージドBeanまたはバッキングBeanが1つ以上含まれています。バッキングBeanはUIコンポーネントのプロパティを定義します(各プロパティはコンポーネントの値またはコンポーネント・インスタンスにバインドされます)。また、バッキングBeanでは、検証、イベント処理、ナビゲーション処理などのコンポーネントに関連した機能を実行するメソッドも定義できます。 |
カスタム・ビジネス・ロジックを指定するには、各カスタム・ページに新規マネージドBeanを作成する必要があります。新規マネージドBeanは、iam-consoles-faces.warに追加できる新規.jarファイルにコンパイルする必要があります。
カスタマイズ・ページをfaces-config-self.xmlに追加します。
次のようにカスタム・ページを定義します。
<managed-bean>
<managed-bean-name>customPage</managed-bean-name>
<managed-bean-class>
oracle.iam.consoles.faces.backing.Self$OperationAction
</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<managed-property>
<property-name>id</property-name>
<property-class>java.lang.String</property-class>
<value>customization_page</value>
</managed-property>
<managed-property>
<property-name>pageUrl</property-name>
<property-class>java.lang.String</property-class>
<value>../pageFragments/custom/Custom.jsff</value>
</managed-property>
</managed-bean>
次のようにカスタム・ページをprimaryOperationsMapに追加します。
<managed-bean>
<managed-bean-name>primaryOperationsMap</managed-bean-name>
<managed-bean-class>java.util.LinkedHashMap</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<map-entries>
<key-class>java.lang.String</key-class>
<value-class>oracle.iam.consoles.faces.backing.Self$OperationAction</value-class>
<map-entry>
<key>#{myTaskPrimaryOperation.entityTypeId}</key>
<value>#{myTaskPrimaryOperation}</value>
</map-entry>
<map-entry>
<key>#{myRequestPrimaryOperation.entityTypeId}</key>
<value>#{myRequestPrimaryOperation}</value>
</map-entry>
<map-entry>
<key>#{myProfilePrimaryOperation.entityTypeId}</key>
<value>#{myProfilePrimaryOperation}</value>
</map-entry>
<!-- New custom fragments -->
<map-entry>
<key>#{customPage.id}</key>
<value>#{customPage}</value>
</map-entry>
</map-entries>
</managed-bean>
新規マネージドBeanをfaces-config-self.xmlに追加します。
oim.ear/iam-consoles-faces.war/WEB-INF/faces-config-self.xmlファイルで新規マネージドBeanクラスを次のように構成する必要があります。
<managed-bean>
<managed-bean-name>customBean</managed-bean-name>
<managed-bean-class>oracle.iam.consoles.faces.custom.CustomBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
次のようにタブ名のカスタム・プロパティをSelf.propertiesに追加します。
|
注意: リソース名の最初の部分は、手順3のmanaged-bean idパラメータと一致する必要があります。 |
customization_page.text=Custom customization_page.shortDesc=Custom Description