3

ポートレット (JBoss GateIn にデプロイされた JSR 286 ポートレット) でユーザー情報をフェッチしようとしています。

     Map userInfo = (Map) request.getAttribute(PortletRequest.USER_INFO);

しかし、私は何も返されません。私のportlet.xmlには次のパラメータがあります:

     <user-attribute>
    <description>User Name</description>
    <name>user.name</name>
</user-attribute>
<user-attribute>
    <description>User Id</description>
    <name>user.id</name>
</user-attribute>

GateIn は、ログインしているユーザーの ID を取得する getRemoteUser() メソッドを提供する PortalRequestContext を提供します。その後、この ID を OrganizationService で使用して User を取得できますが、これはすべて GateIn 固有のものであり、JSR286 標準に従っているわけではありません。JSR 286は、前述のように、ユーザー関連の属性を PortletRequest.USER_INFO からフェッチできると述べています。ガイドしてください。

前もって感謝します!

Ps: JBoss コミュニティの同様の投稿http://community.jboss.org/message/425683#425683

4

2 に答える 2

0

あなたの名前IDは異なります。仕様によると、次のようなものです。

<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.business-info.online.email</name>
</user-attribute>

以下は詳細です(ほんの一部です)..jsr286仕様から完全なリストを取得できます

user.gender
user.employer
user.department
user.jobtitle
user.name.prefix
user.name.given
user.name.family
user.name.middle
user.name.suffix
user.name.nickName
user.login.id
user.home-info.postal.name
user.home-info.postal.street
user.home-info.postal.city
user.home-info.postal.stateprov
user.home-info.postal.postalcode
user.home-info.postal.country
user.home-info.postal.organization
user.home-info.telecom.telephone.intcode
user.home-info.telecom.telephone.loccode
user.home-info.telecom.telephone.number
user.home-info.telecom.telephone.ext
user.home-info.telecom.telephone.comment
user.home-info.telecom.fax.intcode
user.home-info.telecom.fax.loccode
user.home-info.telecom.fax.number
于 2014-02-13T14:49:19.767 に答える
-1
SPList userInformationList = web.SiteUserInfoList;
SPUser user = web.EnsureUser(web.CurrentUser.Name);
// The actual User Information is within this SPListItem  
SPListItem userItem = userInformationList.Items.GetItemById(user.ID);
if (userItem["EMail"] != null)
    email = userItem["EMail"].ToString();
于 2012-09-29T09:45:45.373 に答える