在liferay中显示控制器数据

sau*_*rjk 3 jsp controller view liferay

我到处看都看不到,或者我的搜索不够好.无论如何,这是我的问题.如何在Liferay MVC中显示和/或将数据从控制器传输到view jsp文件?即如果变量"var"在控制器java类中包含值"This is a variable",我如何在jsp文件中显示和/或访问它?或者简单...我们如何将值从控制器传递到liferay MVC中的jsp视图?

感谢任何建议

Dav*_*vid 6

根据您使用的框架,有几种选择可以实现.(Liferay MVC Portlet,spring portlets,JSF)

对于这个答案,我假设您使用MVC Portlet:

让我们与每个人最喜欢的例子你好世界:

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);
    }


}
Run Code Online (Sandbox Code Playgroud)

现在这不会开箱即用!

在你的portlet.xml中更改:

<portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>
Run Code Online (Sandbox Code Playgroud)

至:

<portlet-class>**Your Package structure**.HelloWorldPortlet</portlet-class>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

自定义动作:

view.jsp的

<portlet:actionURL name="worldHello" var="worldpageURL" />

<aui:a href="${worldpageURL}">World hello</aui:a>

<h2><c:out value="${worldHello}"/></h2>
Run Code Online (Sandbox Code Playgroud)

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

根据您的意见,最好是你看一下:

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