首页 > 解决方案 > Liferay 7.2 - 在自定义 jsp 挂钩中使用 journalarticle 类

问题描述

我有一个模块 PortalHook,其中包含:

我需要在这个 jsp 文件中使用 JournalArticle 类,但是当我添加以下导入时:

<%@ page import="com.liferay.journal.model.JournalArticle" %>

它总是给我一个错误:

Une erreur s'est produite à la ligne: [245] dans le fichier Java généré: [C:\x\bundles\tomcat-9.0.17\work\Catalina\localhost\ROOT\org\apache\jsp\html\portal \terms_005fof_005fuse_jsp.java] 只能导入一个类型。com.liferay.journal.model.JournalArticle 解析为一个包

现在我被困在这里。

(我在 pom.xml 中导入了 com.liferay.journal.pai-4.5.2.jar)

标签: liferayliferay-7liferay-7.2

解决方案


查看 CustomJspBag 接口,看起来它只是显示给定模块中包含的 JSP 的名称。我读到这个,因为它们被解析为相对简单的字符串,根本没有在您的自定义模块中处理。

问题是您将 JSP 注入 Liferay 的核心,并且您希望 JSP 依赖于模块。根据定义,这是不应该静态完成的事情,但可以通过显式运行时方式动态创建。

我想到的一个选择是在您的自定义 JSP 中尝试动态包含(DI)。虽然文档讨论了 JSP 中现有的动态包含,但您完全可以自己构建,并将它们插入到您的自定义 JSP 中。然后使用您想出的新密钥实施适当的 DI。据我记得,DI 将在其模块的上下文中解析和执行,因此您将拥有所有依赖项。

我的期望是您可以在包含自定义 JSP 的同一个包中实现您的 DI。

另一种选择是使用任何其他类型的运行时调度,但我认为它们比 DI 产生更多的工作(只要它们按照我假设的方式工作)


推荐阅读