创建liferay portlet - 如何将数据从Java类传递给view.jsp?

Alm*_*bek 19 jsp portlet liferay

我只想从一个名为的JSP文件创建liferay中的portlet view.jsp.我需要的是:

  1. 当portlet加载时,我想调用我生成数组的自定义Java类.

  2. 我需要将该数组传递给view.jsp.

怎么做?

bra*_*zzi 39

您是否使用create.shLiferay 的脚本创建了portlet ?在这种情况下,我们需要创建一个扩展的新portlet类MVCPortlet:

public class ArrayPortlet extends MVCPortlet {

}
Run Code Online (Sandbox Code Playgroud)

此外,您必须将WEB-INF/portlet.xml文件更改为指向其类.替换下面的行

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

通过命名您的portlet类:

<portlet-class>br.com.seatecnologia.arrayportlet.ArrayPortlet</portlet-class>
Run Code Online (Sandbox Code Playgroud)

这只是设置.现在,很酷的部分:代码!您应该创建一个处理portlet视图的方法.此方法应该命名doView()并具有两个参数:a RenderRequest和a RendertResponse.此外,它抛出一些异常并将portlet呈现委托给超类方法:

public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
throws IOException, PortletException {
    super.doView(renderRequest, renderResponse);
}
Run Code Online (Sandbox Code Playgroud)

但是,在渲染portlet之前,我们创建了我们的数组:

String[] array = new String[] { "foo", "bar", "baz" };
Run Code Online (Sandbox Code Playgroud)

并将其RenderRequest作为参数接收.您应该为参数指定名称 - 在本例中,名称为"my-array":

renderRequest.setAttribute("my-array", array);
Run Code Online (Sandbox Code Playgroud)

这是我们的课程,完整:

public class ArrayPortlet extends MVCPortlet {
    @Override
    public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
    throws IOException, PortletException {
        String[] array = new String[] { "foo", "bar", "baz" };
        renderRequest.setAttribute("my-array", array);
        super.doView(renderRequest, renderResponse);
    }
}
Run Code Online (Sandbox Code Playgroud)

我们通过RenderRequest对象将值传递给JSP.现在,在JSP中,我们应该"导入" RenderRequest实例(以及其他对象),将<portlet:defineObjects />标记添加到JSP的开头.在此之后,我们可以renderRequest通过其名称从对象获取任何属性.请注意,该方法getAttribute()返回,Object因此您应将其返回值强制转换为正确的类型:

<portlet:defineObjects />
<%
String[] anArrayFromMyPortlet = (String[])renderRequest.getAttribute("my-array");
%>
Run Code Online (Sandbox Code Playgroud)

现在,您可以根据需要使用检索到的对象:

<ul>
<% for (String string : anArrayFromMyPortlet) { %>
<li><%= string %></li>
<% } %>
</ul>
Run Code Online (Sandbox Code Playgroud)

这是我的机器中此代码的结果:

在此输入图像描述

  • 这是我见过的关于它的任何主题的最佳生活教程.他们应该雇用你来编写文档,教程,文章,维基,演示,书籍等等. (2认同)