Jsp 在Liferay 6.2中获取当前用户(主题显示始终为空)

Jsp 在Liferay 6.2中获取当前用户(主题显示始终为空),jsp,liferay,struts-1,Jsp,Liferay,Struts 1,我尝试在jsp页面中使用以下方式获取当前用户的id: <%@page import="com.liferay.portal.theme.*" %> <%@page import="com.liferay.portal.kernel.util.WebKeys" %> <portlet:defineObjects /> <liferay-theme:defineObjects /> <% themeDisplay = (ThemeDisplay)

我尝试在jsp页面中使用以下方式获取当前用户的id:

<%@page import="com.liferay.portal.theme.*" %>
<%@page import="com.liferay.portal.kernel.util.WebKeys" %>
<portlet:defineObjects />
<liferay-theme:defineObjects />
<%
themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
User objUser=themeDisplay.getUser(); 
%>    
但仍然返回null

我使用liferay 6.2 ce,webmodule struts 1.2作为war文件部署到liferay中,并在appManager中安装


请帮助,我缺少一些配置?

在Liferay中获取当前登录用户的方法不止一种

1]User currentUser=PortalUtil.getUser请求

2]User currentUser=User request.getAttributeWebKeys.User

3]

4]


希望其中一个可以帮助您。

下面是您对我最初问题的回答

如果可以添加Struts应用程序,这意味着其中至少有一个portlet.xml文件,我不知道Liferay应用程序管理器是否可以为您添加它。。。无论如何,您都不能以这种方式访问上下文

通过Struts创建portlet应用程序的最佳方法是使用;在我提供的链接中,您可以看到如何使您的代码符合JSR规范;然后它应该能够与portlet容器进行rigth交互


你可以尝试一个动作,然后测试它是否解决了你的问题。。。标准web应用程序到portlet应用程序之间的转换应该尽可能轻松。

看起来您缺少了taglib指令,您可以通过在jsp中执行以下操作在Liferay中获取用户对象:

<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="theme" %>
<theme:defineObjects/> <%-- Gives you the user object. --%>
<%= user.getLogin() %>

请参见

谢谢Bhavin的回答,但我的问题是请求中不包含:WebKeys.THEME\u DISPLAY如果返回null,我已经尝试了所有这些方法。是否有一些配置允许我的struts web模块访问liferay上下文?谈到webmodule struts,您指的是什么?官方struts portlet桥,或Liferay struts portlet桥?webmodule struts指的是使用struts框架开发的Web应用程序,而不是portlet。我已经使用App Manager安装功能将其部署到liferay portal中,但没有更改。该应用程序已部署,我可以将其添加到liferay页面。但我想让liferay的当前用户添加一些控件。问题是:HttpServletRequest请求不包含WebKeys.THEME\u显示,它返回null。你能帮忙吗?谢谢你,Cira,我终于使用struts Portlet桥将我的struts appli部署到liferay中,现在我可以得到主题显示了。但是我在使用标记库的jsp文件中还有一个问题,比如:错误:org.apache.struts.config.impl.ModuleConfigImpl不能强制转换为org.apache.struts.config.moduleConfig这对我来说是个新问题。。。您能否验证struts库是否有不同的版本?另外,如果我对你的问题的最初答案是有效的,那么作为解决方案的分数将是很好的…:嗨,Cira,在我的应用程序的WEB_INF/lib中,我有:portals-bridges,portals-bridges-common-1.0.4,portals-bridges-struts-1.2.7,struts-1.2.7,struts-el-1.2.7,util-bridges,util-java,util-taglib和其他像itext,jdom,。。。我在index.jsp文件org.apache.struts.config.impl.ModuleConfigImpl上发现此错误,无法将其转换为org.apache.struts.config.ModuleConfig java.lang.ClassCastExceptionmy index.jsp文件:我想您的问题不在您的jsp文件,但在库配置中。。。出于调查目的,您是否尝试清空JSP文件并逐个添加代码来验证是什么阻止了您的执行?您可以通过删除lib/struts-*并在ClassNotFoundExceptions occour时只插入所需的JAR来完成同样的操作。我知道这很无聊,但这是一个调查的好方法。。。
ThemeDisplay td  = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY );
User currentUser = td.getUser();`
LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance();
User currentUser = liferayFacesContext.getUser();
<%@ taglib prefix="portlet" uri="http://java.sun.com/portlet" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="theme" %>
<theme:defineObjects/> <%-- Gives you the user object. --%>
<%= user.getLogin() %>