3

我是 Liferay 和 Java 的新手,我一直在为如何获取用户名字而苦苦挣扎,关于这个产品的文档真的很差,所以任何帮助都将不胜感激。所以我正在开发一个 portlet,我希望它显示用户的名字,这是 view.jsp 文件:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ page import="javax.portlet.PortletPreferences" %>
<%@ page import="com.liferay.portal.model.UserModel " %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<portlet:defineObjects />


<liferay-ui:success key="success" message="Greeting saved
       successfully!" />

<%
PortletPreferences prefs = renderRequest.getPreferences();
String greeting = (String)prefs.getValue(
"greeting", "Hello! Welcome to our portal.");
%>
<%

%>
<p><%= greeting %></p>
<portlet:renderURL var="editGreetingURL">
<portlet:param name="mvcPath" value="/edit.jsp" />
<portlet:param name="userName" value="Test" />

</portlet:renderURL>

<p><a href="<%= editGreetingURL %>">Edit greeting</a></p>

我已经使用了 usermodel 类或接口,我实际上找到了方法 :getFirstName() 但我无法让它工作。

4

2 回答 2

5

另一种选择是像这样使用 Liferay ThemeDisplay:

<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<liferay-theme:defineObjects />

<%= themeDisplay.getUser().getFirstName() %>

虽然我建议不要在您的代码中使用 JSP Scriptlets,并在您的 portlet 类代码中使用 Java 执行此操作。

~~ 编辑:添加替代方案以多次使用用户 ~~

混合使用 Tony 和我的方法的一个例子是这样的:

<%= com.liferay.portal.model.User user = themeDisplay.getUser(); %>

~~ 编辑 2:在 Java 代码中执行此操作 ~~

在这里查看我的要点:https ://gist.github.com/4060650

可以通过使用 JSTL 来摆脱所有 scriptlet 来进一步简化它。

于 2012-11-10T09:36:24.107 回答
3

尝试添加到jsp:

<% 
com.liferay.portal.model.User user = 
      com.liferay.portal.util.PortalUtil.getUser(request);
String firstName = user.getFirstName();
%>
<p>User First Name=<%= firstName %></p>

为了便于理解,我添加了完整的软件包。

于 2012-11-10T03:18:00.003 回答