如何在Liferay 7.2中创建标签库?

时间:2019-09-25 12:02:38

标签: liferay-7 liferay-7.2 tag-library-descriptor

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

第一个问题是,我无法弄清楚我需要为此创建哪种项目。

对于Ex 。如果要创建portlet,则在创建新的liferay模块时需要使用MVC-PORTLET项目模板。以同样的方式, 我可以使用哪些模板在Liferay中创建custon标记库

此后,我需要了解创建标记并将其在portlet中使用的其余步骤。

1 个答案:

答案 0 :(得分: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标签库的运行情况。例如asset-taglib

在消费者捆绑包方面,您有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))"