我正在尝试获取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
我不确定我在哪里失踪。
谢谢
答案 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。”