无法使Liferay登录到UserId

时间:2019-05-20 14:20:43

标签: jsf liferay

我正在尝试获取liferay userId(我正在Liferay 7中使用primefaces 6.2)。

到目前为止,我尝试过的是:

HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();

ThemeDisplay td  =(ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
long userId = td.getUserId();

我收到以下错误:

ERROR [stderr] (default task-49) java.lang.ClassCastException: com.liferay.faces.bridge.ext.filter.internal.ResourceRequestBridgeLiferayImpl cannot be cast to javax.servlet.http.HttpServletRequest

我已经搜索了问题,但找不到有效的解决方案。任何帮助将不胜感激。

谢谢。


我也尝试使用PortletRequest。下面是代码。

PortletRequest request = (PortletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();

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

但是现在找不到ThemeDisplacy类

java.lang.NoClassDefFoundError: com/liferay/portal/theme/ThemeDisplay: javax.el.ELException: java.lang.NoClassDefFoundError: com/liferay/portal/theme/ThemeDisplay

我不确定我在哪里失踪。

谢谢

1 个答案:

答案 0 :(得分:2)

要获取Liferay User对象,可以使用以下代码段:

type:"POST"

也请阅读此article,以了解ExternalContext.getRequest()的返回值-这可能是导致转换错误的原因。 本文进一步说明:“ ExternalContext.getRequest()方法返回FacesContext facesContext = FacesContext.getCurrentInstance(); ExternalContext externalContext = facesContext.getExternalContext(); PortletRequest portletRequest = (PortletRequest) externalContext.getRequest(); User u = PortalUtil.getUser(portletRequest); 而不是Object。在门户网站中使用此方法时,可以将Object强制转换为javax.portlet。 PortletRequest。”