gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:28:14 26 4
gpt4 key购买 nike

我正在尝试仅使用名为 view.jsp 的 JSP 文件在 liferay 中创建 portlet。 .我需要的是:

  • 当 portlet 加载时,我想调用自定义 Java 类来生成一个数组。
  • 我需要将该数组传递给 view.jsp .

  • 怎么做?

    最佳答案

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

    public class ArrayPortlet extends MVCPortlet {

    }

    此外,您必须更改 WEB-INF/portlet.xml文件指向它的类。将下面的行替换为
     <portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>

    通过命名您的 portlet 类:
    <portlet-class>br.com.seatecnologia.arrayportlet.ArrayPortlet</portlet-class>

    这只是设置。现在,最酷的部分:代码!您应该创建一个方法来处理 portlet 的 View 。此方法应命名为 doView()并且有两个参数:一个 RenderRequestRendertResponse .此外,它会引发一些异常并将 portlet 呈现委托(delegate)给父类(super class)方法:
    public void doView(RenderRequest renderRequest, RenderResponse renderResponse)
    throws IOException, PortletException {
    super.doView(renderRequest, renderResponse);
    }

    然而,在呈现 portlet 之前,我们创建了我们的数组:
    String[] array = new String[] { "foo", "bar", "baz" };

    并将其放入 RenderRequest作为参数接收。您应该为参数命名 - 在这种情况下,名称是 "my-array" :
    renderRequest.setAttribute("my-array", array);

    这是我们的类(class),完成:
    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);
    }
    }

    它是通过 RenderRequest我们将值传递给 JSP 的对象。现在,在 JSP 中,我们应该“导入” RenderRequest实例(以及其他对象)添加 <portlet:defineObjects />标记到 JSP 的开头。在此之后,我们可以从 renderRequest 中获取任何属性。对象通过它的名字。注意方法 getAttribute()返回 Object所以你应该将它的返回值转换为正确的类型:
    <portlet:defineObjects />
    <%
    String[] anArrayFromMyPortlet = (String[])renderRequest.getAttribute("my-array");
    %>

    现在,您只需根据需要使用检索到的对象:
    <ul>
    <% for (String string : anArrayFromMyPortlet) { %>
    <li><%= string %></li>
    <% } %>
    </ul>

    这是我机器上这段代码的结果:

    enter image description here

    关于jsp - 创建 liferay portlet - 如何将数据从 Java 类传递给 view.jsp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6894095/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com