我尝试在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();
%>
但是themeDisplay总是返回null !!
我还尝试使用以下方法在我的struts动作中获取它:
public class acces extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ThemeDisplay themeDisplay =
(ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
Long currentuser = themeDisplay.getUserId();
但仍然返回null
我使用liferay 6.2 ce,webmodule struts 1.2使用appManager中的install安装到liferay中作为war文件。
请帮助,我错过了一些配置?
答案 0 :(得分:0)
在Liferay中获取当前登录用户的方法不止一种。
1] User currentUser = PortalUtil.getUser( request );
2] User currentUser = (User) request.getAttribute(WebKeys.USER);
3]
ThemeDisplay td = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY );
User currentUser = td.getUser();`
4]
LiferayFacesContext liferayFacesContext = LiferayFacesContext.getInstance();
User currentUser = liferayFacesContext.getUser();
希望其中一人可以帮助你。
答案 1 :(得分:0)
关于你对我的初步问题的答复......
如果你的Struts应用程序可以被添加,那就意味着它里面至少有一个portlet.xml文件(我不知道Liferay应用程序管理器是否为你添加了它)...无论如何你可以&# 39;以这种方式访问上下文。
Struts创建portlet应用程序的最佳方法是使用Struts Portlet Bridge;如何在我提供的链接中看到它允许您的代码符合JSR规范;那么它应该能够与portlet容器进行交互...
您可以尝试使用一个操作并测试它是否解决了您的问题......标准Web应用程序与Portlet应用程序之间的转换应该尽可能轻松。
答案 2 :(得分:0)
您似乎错过了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() %>
请参阅https://docs.liferay.com/portal/6.2/javadocs-all/com/liferay/portal/model/User.html