我怎樣才能在Java當前Liferay的用戶:獲取當前用戶使用Java代碼
我發現這一點: How can I get the current user in Liferay? 這: Get the current user Liferay using a simple Java code
但有人告訴如何初始化「要求」
我怎樣才能在Java當前Liferay的用戶:獲取當前用戶使用Java代碼
我發現這一點: How can I get the current user in Liferay? 這: Get the current user Liferay using a simple Java code
但有人告訴如何初始化「要求」
請求對象是availabl e作爲action或render-method的參數以及jsps。您不會對它進行初始化,它只是在那裏(請參閱processAction(ActionRequest請求,ActionResponse響應)的參數,渲染器,事件和資源階段也是如此(儘管與請求/響應的子類型不同。)
有你在Vaadin的Portlet(應用嘗試)使用梅索德:?getUser()
Vaadin的Portlet包梁用Vaadin具體框架Liferay的API Vaadin的portlet因此,發展具有本自己的規範,標準的Liferay API在這裏並不是簡單易用的。
讓你的Vaadin應用程序執行com.vaadin.terminal.gwt.server.PortletRequestListener
,然後你可以訪問th e請求:
public class MyApp extends Application implements PortletRequestListener {
public void init() {
…
}
@Override
public void onRequestStart(PortletRequest request, PortletResponse response) {
User user = PortalUtil.getUser(request);
setUser(user);
}
@Override
public void onRequestEnd(PortletRequest request, PortletResponse response) {
}
}
在你的代碼中,用戶是本地的,因此在你的方法之外不可用。你應該給這個添加一個電話。setUser(用戶),以便稍後通過簡單的getUser獲取數據... –
@PATRY這是正確的,我編輯了我的答案。 –
我一直在使用Vaadin 6.8.0和Liferay 6.1。以下是使用Henri Kerola解決方案的一些不同的代碼:
@Override
public void onRequestStart(PortletRequest request, PortletResponse response) {
try {
this.setUser(request.getUserPrincipal().getName());
} catch (Exception e) {
this.setUser("anonymous");
}
}
其中,用戶屬性是Vaadin標籤。由於匿名用戶(來自Liferay的訪客)的getUserPrincipal nullPointer,try/catch是必需的。
最好的問候,
當我試試這個: 的ActionRequest請求= NULL; String userId = request.getRemoteUser(); 我得到空指針異常 我需要一個代碼示例! – Jhon
類YourPortlet擴展了GenericPortlet {void processAction(ActionRequest request,ActionResponse response){User currentUser = PortalUtil.getUser(request); ...}} –
當調用processAction函數至極參數應該作爲請求和響應傳遞? ,因爲當將它們聲明爲本地變量時,它期望我初始化變量 – Jhon