Информация о профиле пользователя

Я пытаюсь получить информацию о пользователе в моем портлете (портлет JSR 286, развернутый в JBoss GateIn), например

     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() для входа в систему с идентификатором пользователя. Этот идентификатор может затем использоваться OrganizationService для получения пользователя, но это все, что касается GateIn, а не в соответствии со стандартом JSR286. JSR 286 утверждает, что связанные с пользователем атрибуты могут быть получены из PortletRequest.USER_INFO, как упомянуто выше. Пожалуйста, руководство.

Заранее спасибо!

Ps: Подобный пост в сообществе JBoss http://community.jboss.org/message/425683

2 ответа

Ваше имя идентификаторы разные, в соответствии со спецификацией это что-то вроде,

<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
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();
Другие вопросы по тегам