所以这就是我要做的事情:
我正试图从一个liferay主题调用一个servlet / controller(无论我能先做什么)。
这是我做的: 我创建了一个名为XController的控制器,然后使用:
生成一个url来调用它#set ($embeddedPortletURL = $portletURLFactory.create($request, "workspace_WAR_xportlet", $page.plid, "RESOURCE_PHASE"))
<input id="workspaceSearchUrl" value="${embeddedPortletURL}" type="hidden">
然后,对于ajax调用,我使用$("#workspaceSearchUrl").val() + "&p_p_mode=view&p_p_resource_id=doSomething"
作为url。
我能够调用portlet没问题,但每当我调用portletRequest.getRemoteUser()时,我得到一个“2203”的userId而不是登录用户。
那么......我究竟做错了什么?为什么getRemoteUser方法会给我一个数字?
编辑: 为了清楚起见,对其他控制器的其他ajax调用返回有效的用户ID(文本)。
我也尝试调用servlet,但是调用getRemoteUser会返回null。我想这意味着servlet不与门户共享会话?
答案 0 :(得分:1)
如果可以,请尝试使用
User currentUser = PortalUtil.getUser(portletRequest);
long userId = currentUser.getUserId();
答案 1 :(得分:0)
您可以通过userId获取这样的用户对象。
User user = UserLocalServiceUtil.getUser(userId);
String name = user.getFirstname();