連合ポータル ガイド

     前  次    目次     
ここから内容

ユーザ プロファイルの連合

WebLogic Portal により、ユーザ プロファイル情報をコンシューマからプロデューサに渡すことができます。この機能により、WebLogic Portal で多くのパーソナライゼーション機能を利用可能にして、連合ポータルで機能させることができます。この章では、連合ポータルでユーザ プロファイル情報を処理する方法を説明します。連合ポータルでユーザ プロファイル情報を使用できるようにするには、コンシューマ アプリケーションとプロデューサ アプリケーションの両方で何らかのコンフィグレーションが必要です。

この章では、以下のトピックについて説明します。

 


はじめに

この節では、ユーザ プロファイル伝播の目的と、WebLogic Portal が連合環境でユーザ プロファイル データを伝播する方法を説明します。

ユーザ プロファイルとは

ユーザ プロファイルは、ユーザ固有の情報を含むプロパティ セットの集合です。WebLogic Portal は、ユーザ プロファイルに依存する多くの機能を提供します。たとえば、WebLogic Portal パーソナライゼーション機能は、ユーザ プロファイルに依存して、特定のタイプのユーザにカスタマイズされたコンテンツを配信します。

たとえば、Workshop for WebLogic では、性別、雇用日、電子メール アドレスなどのプロパティを格納する従業員というプロパティ セットを作成できます。この情報を使用すると、ポータルでユーザが行う操作をパーソナライズできます。ユーザがポータルにログインするときに、ポータルはプロパティ値にアクセスし、設定したパーソナライゼーション ルールに基づいて、パーソナライズされたコンテンツ、電子メール、入力済みのフォーム、および割引にその値を適用できます。

パーソナライゼーションの詳細については、『対話管理ガイド』を参照してください。ユーザ プロファイルの作成の詳細については、『ユーザ管理ガイド』を参照してください。

連合ポータルでのユーザ プロファイル

WebLogic Portal プロデューサがパーソナライズしたコンテンツをコンシューマに返すには、ユーザ情報をコンシューマからプロデューサに伝達する必要があります。連合ポータル内のユーザ プロファイル情報を使用するための基本要件には、次のものが含まれます。

ヒント : 特定のポートレットに必要なプロパティのリストが取得されると、それは将来のアクセスのために、コンシューマ データベースに保存されます。

図 11-1 に示すように、コンシューマがプロデューサに最初に接続すると、プロデューサは、提供するポートレットのリストと、各ポートレットが必要とするユーザ情報に対する要求を返します。

図 11-1 プロデューサによるコンシューマからのユーザ情報の要求

プロデューサによるコンシューマからのユーザ情報の要求

ポートレットがユーザ情報を要求すると、図 11-2 に示されているように、ポートレットを提供できるようにするため、コンシューマは、プロデューサに getMarkupRequest() の一部としてその情報を提供しようと試みます。WebLogic Portal は一般にマッピング ファイルと一緒に P13N API を使用し、要求されたユーザ プロパティをコンシューマ側で取得します。

図 11-2 プロデューサにより戻されたパーソナライズ コンテンツ

プロデューサにより戻されたパーソナライズ コンテンツ

P3P (Platform for Privacy Preferences)

WSRP プロトコルは、ユーザ情報の保存および交換用に標準形式を指定します。この形式は、P3P (Platform for Privacy Preferences) と呼ばれ、インターネット標準です。WebLogic Portal アプリケーションが、WebLogic Portal ユーザ プロファイル形式だけでなく、この形式で表示されるユーザ情報を受け入れるようにコンフィグレーションできます。

詳細については、「P3P の例」を参照してください。P3P 仕様は、W3C の Web サイトである www.w3.org/TR/P3P から入手できます。

 


この機能を使用するタイミング

プロデューサ側とコンシューマ側で定義されたユーザ プロパティが一致しない場合に、この機能を使用します。まったく同じユーザ プロパティが、コンシューマ側とプロデューサ側に存在する場合、この機能を使用する必要はありません。

ヒント : プロダクション環境でのベスト プラクティスは、伝播対象の各ユーザ プロパティに対して、プロパティ セットとプロパティ名を指定することです。すべてのプロパティを取得することは、プロパティの小さいサブセットのみが必要な場合は非効率的です。

 


プロデューサのコンフィグレーション

連合ポータルでユーザ プロファイル情報を使用するには、プロデューサでデプロイされているポートレットにより、どのユーザ プロパティが要求されるかをプロデューサ側で宣言する必要があります。宣言されたプロパティは、コンシューマへの応答で整理されて、コンシューマ アプリケーションに戻されます。コンシューマ アプリケーションは、プロデューサを登録するときに、要求されたユーザ プロパティ値を返す必要があります。

ユーザ プロファイル情報を使用するためにプロデューサでデプロイされるポートレットをコンフィグレーションする手順は、Java ポートレットまたは非 Java ポートレットのどちらをコンフィグレーションするかによって異なります。

この節では、次のトピックについて説明します。

Java ポートレットのコンフィグレーション

Java ポートレット仕様は、名前、電子メール アドレス、電話番号などのユーザ属性に、Java ポートレットがどのようにアクセスするかを指定します。この節では、プロデューサ アプリケーションでデプロイされている Java ポートレットに対してユーザ属性を指定する方法、および Java ポートレットがユーザ情報を取得する方法について説明します。

ヒント : ユーザ情報に Java ポートレットがアクセスする方法の詳細については、Java ポートレット仕様のユーザ情報の節を参照してください。

デプロイメント記述子 (portlet.xml) のコンフィグレーション

Java ポートレット仕様は、デプロイされている Java ポートレットにより要求されるユーザ属性を指定するため、<user-attribute> 要素を定義します。図 11-1 は、指定されているユーザ プロパティがある portlet.xml ファイルの一部を示しています。<name> 要素は、ユーザ属性名を指定します。

コード リスト 11-1 portlet.xml ファイルでのユーザ プロパティの指定
<portlet-app>
...
<user-attribute>
        <name>Employee/Language</name>
    </user-attribute>
<user-attribute>
        <name>Employee/Role</name>
    </user-attribute>
...
</portlet-app>

デフォルト ユーザ プロパティ セットの作成」も参照してください。

Java ポートレット内のユーザ情報の取得

Java ポートレット仕様は、Java ポートレットがデプロイされているポータル環境から、Java ポートレットがユーザ情報を取得する方法も指定します。ポートレットは、要求を行ったユーザのユーザ属性を含む Map オブジェクトを取得できます。この Map オブジェクトを PortletRequest.USER_INFO 定数を使って、要求から取得できます。

コード リスト 11-2 のコード例は、ユーザ情報の Map を Java ポートレットに関連付けられている JSP 内の要求から取得する方法を示しています。ユーザ プロパティ値は、ユーザ プロパティ名をキーとして使用して、Map から取得されます。

コード リスト 11-2 Java ポートレット内のユーザ情報の取得
...
    
    Map<String, Object> props;
PortletRequest portletRequest = (PortletRequest)
    request.getAttribute("javax.portlet.request");
if (portletRequest != null) {
props = (Map<String, Object>)
       portletRequest.getAttribute(PortletRequest.USER_INFO) ;
} else {
props = null ;
}

if (props == null) {%>
<p>Empty Profile</p>
<%} else {%>
<p><%= props.get("Employee/Language") %></p>
<p><%= props.get("Employee/Role") %></p>
<%}%>
...

デフォルト ユーザ プロパティ セットの作成

コード リスト 11-3 では、portlet.xml ファイルで指定されたサンプル ユーザ属性を示します。この章は、デフォルト ユーザ プロパティ セットを作成して <user-attribute> プロパティを効率化できる方法について説明します。たとえば、「従業員」というデフォルト ユーザ プロパティを作成することで、コード リスト 11-3 にある属性名を <name>言語</name> に短縮することができます。

コード リスト 11-3 portlet.xml で指定されたユーザ属性

<user-attribute>
    <name>Employee/Language</name>
</user-attribute>

デフォルト ユーザ プロパティ セットを作成するには、まずポータル Web アプリケーションの WEB-INF ディレクトリに weblogic-portlet.xml ファイルを作成します。次に、<user-property-set> 属性を使用してデフォルト ユーザ プロパティ セットをコンフィグレーションします。

コード リスト 11-4 では、Web アプリケーションのすべてのポートレットに「従業員」という名前のデフォルト ユーザ プロパティ セットを作成する方法について示します。

コード リスト 11-4 すべてのポートレットに適用されるデフォルト プロパティ セット
<portal-container>
<user-property-set>Employee</user-property-set>
</portal-container>

コード リスト 11-5 では、特定のポートレットにデフォルト ユーザ プロパティ セットを作成する方法について示します。

コード リスト 11-5 特定のポートレットに適用されるデフォルト プロパティ セット
<portlet>
<name>portletName</name>
<user-property-set>Employee</user-property-set>
....
</portlet>

weblogic-portlet.xml で指定されたデフォルト ユーザ プロパティ セット「従業員」で、portlet.xml ファイルの コード リスト 11-3 に示すように <user-attribute> 値をコーディングすることができます。

コード リスト 11-6 ユーザ属性

    <user-attribute>
        <name>Language</name>
    </user-attribute>

weblogic-portlet.xml ファイルの詳細については、『ポートレット開発ガイド』の「ポートレットの構築」を参照してください。

ユーザ プロパティのマッピング

コンシューマ側とプロデューサ側のユーザ プロパティが一致しない場合、コンシューマ側でマッピング ファイルを作成できます。マッピング ファイルにより、コンシューマは、プロデューサにより要求されるプロパティにマップするユーザ プロパティを取得できます。ユーザ プロパティのマッピングの詳細については、「コンシューマのコンフィグレーション」を参照してください。

非 Java ポートレットのコンフィグレーション

この節では、プロデューサ アプリケーションでデプロイされている非 Java ポートレットに対してユーザ属性を指定する方法について説明します。

デプロイメント記述子ファイルのコンフィグレーション

非 Java ポートレットについては、記述子ファイルの wsrp-producer-config.xml で必要なユーザ プロパティを指定します。このファイルは、プロデューサ Web アプリケーションの WEB-INF ディレクトリに配置されます。コード リスト 11-7 は、サンプルの wsrp-producer-config.xml ファイルを示しています。<requiredUserProperties> 要素は、プロデューサ Web アプリケーションでデプロイされているポートレットに対して要求されているユーザ プロパティを指定します (太字で表示)。例では、値 All が、コンシューマがプロデューサに対してすべての利用可能なユーザ プロファイル情報を提供しなければならないことを指定しています。その他の可能な値については、この節で説明されています。

コード リスト 11-7 サンプル wsrp-producer-config.xml ファイル
<?xml version="1.0" encoding="UTF-8"?>
<wsrp-producer-config
xmlns="http://www.bea.com/servers/weblogic/wsrp-producer-config/9.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:uddi="urn:uddi-org:api_v2"
xsi:schemaLocation="http://www.bea.com/servers/weblogic/wsrp-producer-config/9.0 wsrp-producer-config.xsd">
<description></description>
<service-config>
<registration required="true" secure="false"/>
<service-description secure="false" supports-method-get="true"/>
<markup secure="false" rewrite-urls="true" transport="string"/>
<portlet-management required="true" secure="false"/>
</service-config>
<supported-locales>
<locale>en</locale>
<locale>en-US</locale>
</supported-locales>
<requiredUserProperties properties="All">
    </requiredUserProperties>
</wsrp-producer-config>

<requiredUserProperties> 要素には、次の 3 つの値のうちのいずれかを使用する properties という 1 つの属性が含まれています。

name プロパティに指定される値は、次の形式のいずれかにすることができます。

どのユーザ情報も wsrp-producer-config.xml で指定されない場合、その動作は None の値が <requiredUserProperties> で指定されている場合と同じ動作になります。

ポートレット内のユーザ情報の取得

コード リスト 11-8 のコードの抜粋は、P13N タグの <profile:getProperty> を使ってポートレットの JSP ファイルでユーザ プロパティを取得する方法を示しています。

コード リスト 11-8 ポートレット内の値の取得

<%
if (request.getUserPrincipal() != null) {
%>
<profile:getProfile profileKey="<%= request.getUserPrincipal().getName() %>"      />
<%
} else { %>
<profile:getProfile profileKey="anonymous" groupOnly="true" />
<%
}
%>

  <tr>
<td>Name</td>
<td id="wsrp_date"><profile:getProperty propertySet=
"Employee" propertyName="name"/></td>
  </tr>
  <tr>
    <td>Gender</td>
    <td id="wsrp_int_code"><profile:getProperty propertySet=
    "Employee" propertyName="gender"/></td>
    </tr>
  <tr>
...

ユーザ プロパティ拡張の処理

WebLogic Portal または非 WebLogic Portal コンシューマが拡張 P3P ユーザ プロファイル情報を送信する場合、ポートレットは、<profile:getProperty> タグから取得した List オブジェクトとしてその拡張を取得できます。コード リスト 11-9 は、電話の内線番号を含む List を抽出するコード例を示します。この例では、homeInfo/postal/extensions プロパティは、拡張 WSRP ユーザ プロパティです。

コード リスト 11-9 ユーザ プロファイル拡張の取得
<profile:getProperty propertySet="<%= UserProperty.P3P_PROPERTY_SET_NAME %>" propertyName="homeInfo/postal/extensions" id="postalExtsObj"/>
<%
List<Element> teleExts = (List<Element>) postalExtsObj;
if (teleExts != null) {
for (int i = 0 ; i < teleExts.size() ; i++) {
                   String extStr = teleExts.get(i)

%>
                   <tr> <td>Postal Extension[<%= i %>]</td>
                   <td colspan="2"
                   id="postal_extensions[<%=i%>]"><%= extStr %></td> </tr>
<%  }
  }%>

コンシューマでのユーザ情報のマッピング

コンシューマは、コンシューマに存在するプロパティに、プロデューサにより要求されたユーザ プロパティをマップできます。ユーザ プロパティのマッピングの詳細については、「コンシューマのコンフィグレーション」を参照してください。

 


コンシューマのコンフィグレーション

多くの場合、プロデューサに存在するユーザ プロパティ セットとプロパティ名はコンシューマ側のものと一致しません。したがって、WebLogic Portal が、これらの名前を適切にマップできるようにします。この節では、コンフィグレーション ファイルの使用またはプログラミングにより、プロパティ セットとプロパティ名をマッピング クラスにマップする方法を説明します。

この節では、次のトピックについて説明します。

マッピング ファイルの使用

wsrp-user-property-config.xml ファイルでユーザ プロファイル マッピングを指定します。このファイルは、コンシューマ Web アプリケーションの WEB-INF ディレクトリに配置されます。

コード リスト 11-10 に示されているように、要素の <wsrp-user-property-map-bean> は、このコンフィグレーション ファイルに表示できるトップレベルの要素です。<wsrp-user-property-map-bean> の下に入る可能性がある要素は太字で表示され、次のものが含まれます。

コード リスト 11-10 に示されているように、<producer-user-property-map> 要素を使用して、プロデューサ固有のマッピングを直接またはマッピング クラスを使って作成できます。

コード リスト 11-10 wsrp-user-property-config.xml ファイルの例
<?xml version="1.0" encoding="UTF-8"?>
<wsrp-user-property-map-bean xmlns="http://www.bea.com/ns/portal/90/wsrp-user-property-config">

    <!-- 登録済みのすべてのプロデューサについて ldap/name を Employee/name にマップします -->
    <user-property-map>
<producer-property-name>Employee/name</producer-property-name>
<consumer-property>ldap/name</consumer-property>
</user-property-map>

    <!-- 登録済みのすべてのプロデューサに適用するマッパー クラスを指定します -->
    <mapper-class-name>myClasses.MyUserPropertyMapper1</mapper-class-name>

    <!-- 特定のプロデューサについてのユーザ プロパティのマップ -->
    <producer-user-property-map>
<producer-handle>complexProducer</producer-handle>
<user-property-map>
<producer-property-name>Employee/number</producer-property-name>
<consumer-property>"xxxxxx"</consumer-property>
</user-property-map>
</producer-user-property-map>

    <!-- 特定のプロデューサのマッパー クラスを指定します -->
    <producer-user-property-map>
<producer-handle>complexProducer2</producer-handle>
<mapper-class-name>myClasses.MyUserPropertyMapper2</mapper-class-name>
</producer-user-property-map>
</wsrp-user-property-map-bean>

<user-property-map><producer-property-name> サブ要素は、要求されたプロデューサ プロパティの propertySetpropertyName のペアを指定し、<consumer-property> サブ要素は、コンシューマ側に存在する同等のペアを指定します。

<producer-property-name><consumer-property> のペアは次の形式にすることができます。

マッピング クラスの使用

マッピング ファイルを使用して、要求したプロデューサ プロパティをコンシューマ プロパティにマップする他に、マッピング クラスを作成して、プログラミングによりコンシューマ側でユーザ プロパティ値をマップおよび設定できます。マッピング クラスを使用するには、以下の操作を行います。

マッピング クラスの書き込み

マッピング クラスを作成するには、次の手順に従います。

  1. com.bea.wsrp.consumer.userproperty.DefaultUserPropertyMapper クラスを拡張します。
  2. getProducerProperties メソッドをオーバーライドして、作成するマッピング機能を実装します。このメソッドの詳細については、「Javadoc」を参照してください。コード リスト 11-11 内のマッパー クラスの例は、ユーザ名に基づいてユーザに対する性別プロパティを設定します。
  3. 注意 : DefaultUserPropertyMapper の拡張と getProducerProperties の無効化は、必須ではありませんが、最も簡単で最良の実施例です。必要に応じて、抽象ベース クラスも拡張できます。
  4. wsrp-user-property-config.xml ファイルでマッパー クラスをコンフィグレーションします。そのためには、コード リスト 11-11 に示されているパターンをたどる wsrp-user-property-config.xml に、行を追加します。ここで producerHandle は、コンシューマ側でプロデューサを識別するユニークな名前、myClasses.MyMapperClass は、マッパー クラスの完全なクラス名を表します。
  5. コード リスト 11-11 マッパー クラスの例
    package com.bea.portlet.qa.wsrp.userprops;

    import java.util.Arrays;
    import java.util.Collection;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.Set;

    import com.bea.p13n.property.EntityPropertyCache;
    import com.bea.wsrp.consumer.userproperty.DefaultUserPropertyMapper;
    import com.bea.wsrp.consumer.userproperty.RequiredUserProperties;
    import com.bea.wsrp.consumer.userproperty.UserProperty;

    public class TestUserPropertyMapper extends DefaultUserPropertyMapper {
    private final static Set<String> MALE_NAMES = new HashSet<String>() ;
    private final static Set<String> FEMALE_NAMES = new HashSet<String>() ;

    static {
    final String[] maleNames = {"Nate","Nathan","Eric","Subbu","Scott"};
    MALE_NAMES.addAll(Arrays.asList(maleNames)) ;
    final String[] femaleNames = {"Mandy","Geeta","Jenn","Jen","Jenny"} ;
    FEMALE_NAMES.addAll(Arrays.asList(maleNames)) ;
    }

    /**
    * user.name.given が設定される場合は、マップによりユーザの性別が設定されます
    * @param requiredProperties プロデューサが要求するプロパティ
    * @param map キーがプロデューサの名前であり、
    * 値がコンシューマの名前であるマップ
    * @param profile コンシューマでのユーザのプロファイル
    * @return プロデューサにマップされたプロパティ
    */
    public Collection<UserProperty> getProducerProperties(
    RequiredUserProperties requiredProperties,
    Map<String, String> map,
    EntityPropertyCache profile) {

    final Collection<UserProperty> properties =
    super.getProducerProperties(requiredProperties, map, profile) ;
    if (requiredProperties.isPropertyRequired("HR", "gender")) {
    final String givenName = (String) getProperty(profile, "HR", "name.given") ;
    if (MALE_NAMES.contains(givenName)) {
    addUserProperty(properties, "HR", "gender", "M") ;
    } else if (FEMALE_NAMES.contains(givenName)) {
    addUserProperty(properties, "HR", "gender", "F") ;
    }
    }
    return properties ;
    }
    }

マッピング クラスのコンフィグレーション

wsrp-user-properties-config.xml ファイルでマッピング クラスを宣言する必要があります。そのためには、<mapper-class-name> 要素を使用します。この要素は、次の例に示すように、プロパティとして完全修飾クラス名を使用します。

<mapper-class-name>myClasses.MyMapperClass</mapper-class-name>

<wsrp-user-property-map-bean> 要素または <producer-user-property-map> 要素の下に、直接この要素を配置できます。コンフィグレーション ファイルの詳細については、「マッピング ファイルの使用」を参照してください。

定数のマッピング

ユーザ プロパティをユーザ プロパティにマップするだけでなく、ユーザ プロパティを定数値にマップできます。コンフィグレーション ファイルまたはマッパー クラスで、定数にマップできます。コード リスト 11-12 は、long というプロパティが long 型の定数にマップされている wsrp-user-properties-config.xml ファイルの一部を示しています。これは、/L 区切り記号で囲まれています。

コード リスト 11-12
...
        <user-property-map>
<producer-property-name>map/long</producer-property-name>
<consumer-property>/L42/L</consumer-property>
</user-property-map>
...

表 11-1 には、すべての定数区切り記号が含まれています。

表 11-1 定数区切り記号
区切り記号
String
"
"Hello World"
Boolean
/B
/Btrue/B
Long
/L
/L42/L
Double
/D
/D3.14159/D
Date
/T
/T1975-09-27T14:38:11-07:00/T

マッピング クラスを作成する場合、表 11-1 に示されている区切り記号を使用して定数を指定するか、com.bea.wsrp.consumer.userproperty.UserProperty インタフェースで定義されている定数を指定できます。このインタフェースの詳細については、「Javadoc」を参照してください。

 


P3P の例

この節では、この章で前述した例の一部を書き直して、WebLogic Portal ユーザ属性の代わりに P3P 属性を使用する方法を示します。この節では、次の例について説明します。

この節では、次の例について説明します。

例 : P3P 属性がある portlet.xml ファイル

portlet.xml ファイルは、Java ポートレットに対する標準のデプロイメント記述子です。コード リスト 11-13 は、P3P 属性がある portlet.xml ファイルを示しています。このファイルの詳細については、「Java ポートレットのコンフィグレーション」を参照してください。

P3P 属性名は、常にプレフィックスの user で始まり、慣例により、ドット (.) 区切り文字が名前の区切り要素として使用されます (例 : user.name.given)。Java ポートレットにより使用されるすべての名前については、Java ポートレット仕様を参照してください。

コード リスト 11-13 portlet.xml ファイルでのユーザ プロパティの指定
<portlet-app>
...
    <user-attribute>
        <description>User Given Name</description>
        <name>user.name.given</name>
    </user-attribute>
    <user-attribute>
        <description>User Last Name</description>
        <name>user.name.family</name>
    </user-attribute>
    <user-attribute>
        <description>User eMail</description>
        <name>user.home-info.online.email</name>
    </user-attribute>
    <user-attribute>
        <description>Company Organization</description>
        <name>user.business-info.postal.organization</name>
    </user-attribute>
...

</portlet-app>

例 : Java ポートレットでの P3P ユーザ情報の取得

コード リスト 11-14 のコード例は、ユーザ情報の Map を Java ポートレットに関連付けられている JSP 内の要求から取得する方法を示しています。user.bdate などの標準 P3P ユーザ プロパティ名が、ファイルで使用されています。

コード リスト 11-14 Java ポートレット内のユーザ情報の取得

Map<String, Object> props;
PortletRequest portletRequest = (PortletRequest)     request.getAttribute("javax.portlet.request");
if (portletRequest != null) {
props = (Map<String, Object>)        portletRequest.getAttribute(PortletRequest.USER_INFO) ;
} else {
props = null ;
}

if (props == null) {%>
<p>Empty Profile</p>
<%} else {%>
<p><%= props.get("user.bdate") %></p>
<p><%= props.get("user.business-info.telecom.telephone.intcode") %></p>
<%}%>
...

例 : その他のポートレットでのユーザ情報の取得

コード リスト 11-15 のコードの抜粋は、P13N タグの <profile:getProperty> を使ってポートレットの JSP ファイルで P3P プロパティを取得する方法を示しています。WebLogic Portal は定数 com.bea.wsrp.consumer.userproperty.UserProperty.P3P_PROPERTY_SET_NAME を、標準 P3P ユーザ プロパティのセットであると認識します。

コード リスト 11-15 非 Java ポートレットでの P3P 値の取得
<%@ page import = "com.bea.wsrp.consumer.userproperty.UserProperty" %>
...
<%
if (request.getUserPrincipal() != null) {
%>
<profile:getProfile profileKey="<%= request.getUserPrincipal().getName() %>"
     />
<%
} else { %>
<profile:getProfile profileKey="anonymous" groupOnly="true" />
<%
}
%>

  <tr>
    <td>Date</td>
    <td id="wsrp_date"><profile:getProperty propertySet=
    "<%= UserProperty.P3P_PROPERTY_SET_NAME %>" propertyName="bdate"/></td>

  </tr>
  <tr>
    <td>Int Code</td>
    <td id="wsrp_int_code"><profile:getProperty propertySet=
    "<%= UserProperty.P3P_PROPERTY_SET_NAME %>" propertyName=
    "businessInfo/telecom/telephone/intcode"/></td>
  </tr>
...

ページの先頭       前  次