この章では、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