用户个人资料信息

时间:2011-06-03 11:45:31

标签: jboss portal jsr286 gatein

我试图在我的portlet中获取用户信息(在JBoss GateIn中部署的JSR 286 portlet),如

     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提供PortalRequestContext,它提供了getRemoteUser()方法来登录用户的id。然后,OrganizationService可以使用此id来获取User,但这可能是所有GateIn特定的而不是JSR286标准。 JSR 286声明可以从PortletRequest.USER_INFO获取用户相关属性,如上所述。请指导。

提前致谢!

Ps:JBoss社区上的类似帖子http://community.jboss.org/message/425683#425683

2 个答案:

答案 0 :(得分: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 spec获得完整列表

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

答案 1 :(得分:-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();