根据您使用的框架,有几个选项可以实现这一目标。
(Liferay MVC Portlet、spring portlet、JSF)
对于这个答案,我假设您使用 MVC Portlet:
让我们来看看大家最喜欢的例子 hello world:
public class HelloWorldPortlet extends MVCPortlet{
@Override
public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
renderRequest.setAttribute("helloMessage", "Hello World");
super.doView(renderRequest, renderResponse);
}
}
现在这不能开箱即用!
在您的 portlet.xml 中更改:
<portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>
收件人:
<portlet-class>**Your Package structure**.HelloWorldPortlet</portlet-class>
view.jsp
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<portlet:defineObjects />
<%-- Option A --%>
<h1>
<c:out value="${helloMessage}" />
</h1>
<%-- Option B --%>
<%
String message = (String)request.getAttribute("helloMessage");
%>
<h1>
<%= message %>
</h1>
自定义操作:
View.jsp
<portlet:actionURL name="worldHello" var="worldpageURL" />
<aui:a href="${worldpageURL}">World hello</aui:a>
<h2><c:out value="${worldHello}"/></h2>
HelloWorldPortlet
public class HelloWorldPortlet extends MVCPortlet{
@Override
public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
renderRequest.setAttribute("helloMessage", "Hello World");
super.doView(renderRequest, renderResponse);
}
public void worldHello(ActionRequest request, ActionResponse renderResponse){
request.setAttribute("worldHello", "World Hello");
}
}
根据您的 cmets,最好调查一下:
http://www.liferay.com/community/liferay-projects/liferay-faces/documentation
由于基于 JSF 的 portlet 可能是未来的主要关注点
http://www.liferay.com/community/blogs?p_p_id=115&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&_115_struts_action=%2Fblogs_aggregator%2Fview_entry&_115_entryId=13443886