2012-05-04 54 views
13

我的工作獲取當前用戶的Liferay:的Liferay 6.0.6的JBoss 5.1Struts2的使用一個簡單的Java代碼

我的問題是,如何讓當前的用戶在Liferay的登錄後,使用的Java代碼

+0

? –

+0

我的意思是,該解決方案應該是一個Java代碼,我們必須找回通過電子郵件當前用戶:) – Sabrina

回答

27

在你的doView/processAction方法做以下

User user = (User) request.getAttribute(WebKeys.USER); 

或使用ThemeDisplay對象。它包含諸如companyId,的groupId,另一個信息...

ThemeDisplay td =(ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY); 
User user = td.getUser(); 

類ThemeDisplay,用戶NAD WebKeys是門戶service.jar中的一部分。

如果你只需要一些ID來識別當前用戶也可以使用

String userId = request.getRemoteUser(); 

這個解決方案不是Liferay的具體應該JSR-286的門戶網站之間移植。

+0

非常感謝你:)我將測試這一切,我會告訴你 – Sabrina

+1

你能告訴我更多關於實例「請求」。如何初始化它? – Sabrina

+2

它要麼RenderRequest中,ActionRequest裏,EventRequest或ResourceRequest。如果你不熟悉他們,那麼你應該讀一些門戶教程,如http://www.liferay.com/documentation/liferay-portal/6.0/development/-/ai/understanding-the-two-phases-of- 。portlet的執行 –

6

Liferay的提供的Util類

com.liferay.portal.util.PortalUtil

這個類包含了所有的工具方法來獲取常用的屬性。

嘗試使用PortalUtil.getUser(PortletRequest portletRequest)方法,以避免創建新的對象和引用。

+0

與ThemeDisplay有什麼不同? – cheloncio

+0

@zhelon,什麼都沒有,你的請求從中獲取themeDisplay,然後的getUser(),PortalUtil.getUser()獲取請求一樣,如果你看到PortalImpl.getUser(),那麼你會發現這個request.getAttribute(WebKeys。用戶); –

6

這是其他可能的方式做到這一點:使用登錄ID

private LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance(); 
User currentUser=liferayFacesContext.getUser()