0

我是 Liferay 的新手,我需要创建一个可以在我的 liferay portlet 中使用的自定义标签库。但问题是,我没有得到任何在 Liferay 中创建和使用它的分步教程或指南。

第一个问题是,我无法弄清楚我需要为此创建什么样的项目。

对于前。如果我正在创建一个 portlet,我需要在创建新的 liferay 模块时使用 MVC-PORTLET 项目模板。同样,我可以使用什么模板在 Liferay 中创建自定义标签库

此后,我需要知道创建标签并在我的 portlet 中使用它的剩余步骤。

4

1 回答 1

1

标签库不是 Liferay Portal 特定的模块。它们是标准技术,是(是?)Java EE 规范的一部分。我所知道的最后一篇涵盖它们的官方教程是The Java EE 5 Tutorial。您可能应该阅读它以了解如何构建自定义标签库。您在 Liferay Portal 中使用它们的方式与在任何其他 Web 应用程序中使用它们的方式没有什么不同。

请记住 JSP,因此标记库是相当古老的技术。虽然仍然广泛用于许多项目(如 Liferay Portal),但我认为它们在最近的 Java/Jakarta EE 规范中被 JSF 取代。此外,随着过去几年 Web 的发展,许多开发人员和产品(如 Liferay)正在从后端 UI 生成转移到 Web 组件和现代 JS 框架之类的东西。

更新(以解决评论中的说明):

Liferay 用于构建 taglib 包的工具中没有模板(据我所知)。但是一个标准的 OSGi 模块应该可以完成这项工作。重要的部分是告诉您jsp.taglib在文件中提供了该功能bnd.bnd

Provide-Capability:\
    osgi.extender;\
        osgi.extender="jsp.taglib";\
        uri="http://YOUR_DOMAIN/tld/lib";\
        version:Version="${Bundle-Version}"

确保还导出相关包。你可以检查其他 Liferay 标签库是如何做的。例如资产标签库

在消费者捆绑包方面,您有 2 个选项:

  1. 如果您使用 Liferay 的工作区(或相关的 BND 插件),您可以简单地添加
   -jsp: *.jsp,*.jspf

文件中的说明bnd.bnd。这将告诉触发将生成所需要求的 BND 插件。

  1. 如果您不使用该工具,则需要手动添加要求:
Require-Capability:\
    osgi.extender;\
        filter:="(&(osgi.extender=jsp.taglib)(uri=http://YOUR_DOMAIN/tld/lib))"
于 2019-09-25T12:59:04.503 回答