Alm*_*bek 19 jsp portlet liferay
我只想从一个名为的JSP文件创建liferay中的portlet view.jsp.我需要的是:
当portlet加载时,我想调用我生成数组的自定义Java类.
我需要将该数组传递给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)
这是我的机器中此代码的结果:

| 归档时间: |
|
| 查看次数: |
31529 次 |
| 最近记录: |