3

我正在尝试在我的 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 来获取用户,但这都是 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 回答