【问题标题】:Rendering a layout template inside a Liferay portlet在 Liferay portlet 中呈现布局模板
【发布时间】:2014-06-02 08:52:24
【问题描述】:

我正在尝试在我的自定义 Liferay portlet 中呈现带有嵌套 portlet 的布局模板。 Liferay 自己的“嵌套 Portlets”portlet 使用 view.jsp 中的 RuntimePortletUtil:

RuntimePortletUtil.processTemplate(application, request, response, pageContext, out, velocityTemplateId, velocityTemplateContent);

但是,当我在我的 portlet 中执行相同操作时,只要将任何 portlet 放入布局模板中,我就会收到以下错误:

[render_portlet_jsp:157] javax.servlet.ServletException: File "/html/portal/render_portlet.jsp" not found
at org.apache.jasper.servlet.JspServlet.handleMissingResource(JspServlet.java:412)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

RuntimePortletUtil 是否只能在 Liferay portlet 上下文中使用,或者有没有办法让它在我自己的 portlet 中工作?

【问题讨论】:

  • 你试过哪个liferay版本? 6.1 还是 6.2?您是否在 JSP 中使用上述调用?你是如何获得 velocityTemplateId 和 velocityTemplateContent 的?

标签: liferay liferay-6


【解决方案1】:

看起来该实现需要一个您可能没有的文件 /html/portal/render_portlet.jsp。可能就像检查那个文件一样简单,看看你是只需要它还是需要更多的资源。

但是,我建议您查看您想要解决的潜在问题,而不是寻找该实现:恕我直言,布局模板是迄今为止您在 Liferay 中可以拥有的最简单的插件类型。我看到的所有嵌套布局模板的示例看起来更像是一种快速破解,而不是一个合适的解决方案。我的建议是提供一些自定义布局模板:它们的数量通常不会很大,因为增加的布局数量通常会让最终用户越来越困惑。

NestedPortlet 是在 Liferay 的核心内部实现的,不对外部运行做任何假设。虽然根据服务器实现它可能不是最佳的架构决策,但没有人注意让该代码能够在门户之外运行 - 帮自己一个忙,通过检查不同的解决方案让您的生活更轻松。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多