0

所以这就是我想要做的:

我正在尝试从 liferay 主题调用 servlet/控制器(无论我可以先开始工作)。

这是我所做的:我制作了一个名为 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() 时,我得到的userId 为“2203”,而不是登录用户。

那么......我到底做错了什么?为什么 getRemoteUser 方法会返回一个数字?

编辑:为了清楚起见,对其他控制器的其他 ajax 调用返回一个有效的用户 ID(文本)。

我也尝试调用一个 servlet,但是调用 getRemoteUser 返回一个空值。我想这意味着 servlet 不与门户共享会话?

4

2 回答 2

1

如果可以,请尝试使用

User currentUser = PortalUtil.getUser(portletRequest);
long userId = currentUser.getUserId();
于 2013-09-26T14:01:38.083 回答
0

您可以像这样通过 userId 获取用户对象。

User user = UserLocalServiceUtil.getUser(userId);

String name = user.getFirstname();
于 2013-10-03T07:14:05.053 回答