gpt4 book ai didi

liferay - 如何替换 Liferay native portlet 上的功能

转载 作者:行者123 更新时间:2023-12-04 10:11:29 25 4
gpt4 key购买 nike

我正在对 Liferay Intallation 附带的本地 Liferay portlet 进行更改。如何通过钩子(Hook)或类似方法将函数更改为我自己的实现?

我已经阅读了如何制作前置条件和后置条件以及如何制作接口(interface)的新实现,但我不知道如何在我想要保持原来状态的 portlet 的随机类中替换随机函数。

最佳答案

有几种方法可以修改本地 Liferay portlet 的功能。这是一个快速概述。

大多数 Hook 功能通过位于/docroot/WEB-INF 目录中的 liferay-hook.xml 文件进行描述。以下是最常用的方法。

Custom JSPs

在 liferay-hook.xml 文件中,将以下子项添加到 <hook/>

<custom-jsp-dir>/META-INF/custom_jsps</custom-jsp-dir>

该元素定义了您要放置要覆盖的 JSP 的位置。例如,您可能希望在以下位置为 Document Library portlet 重写 view.jsp:
[custom-jsp-dir]/html/portlet/document_library/view.jsp

Model Listeners

对于这个,您必须定义一个通常存储在的 portal.property 文件,
/docroot/WEB-INF/src/portal.property

并告诉 liferay-hook.xml它的位置。以下是上述的示例,
<portal-properties>portal.properties</portal-properties>

例如,如果您想监听 User 的变化,您可以在属性中写入,
value.object.listener.com.liferay.portal.model.User=com.my.example.UserListener;

格式如下,
value.object.listener.[class-to-listen]=[my-listener-class]

你的类(class)应该实现 com.liferay.portal.model.BaseModelListener .

在这里,您可以收听诸如 Add、Update、Remove 等事件。

Extend\Overwrite Service

一个类似的故事,在 liferay-hook.xml<hook />元素添加

<service>
<service-type>com.liferay.portal.service.UserService</service-type>
<service-impl>my.example.service.UserServiceImpl</service-impl>
</service>

在这里,您的实现应该为特定服务扩展正确的包装类。例如,上面的例子是
com.liferay.portal.service.UserServiceWrapper;

您现在应该能够覆盖 UserService 的所有公共(public)方法,例如 updateUser(..) .

Customization of Struts Actions

(仅适用于 Liferay 6.1 版本)

以与扩展服务非常相似的方式,定义 <hook /> 的元素

<struts-action>
<struts-action-path>/message_boards/view</struts-action-path>
<struts-action-impl>my.example.action.SampleViewAction</struts-action-impl>
</struts-action>

你需要扩展,
com.liferay.portal.kernel.struts.BaseStrutsAction

并且您将有权访问该请求并可以执行自定义操作。与自定义 JSP 结合使用非常强大。

祝你好运!

请务必检查与您使用的 Liferay 版本的兼容性。

如果您需要更多控制权,则需要使用 ext-plugin。

关于liferay - 如何替换 Liferay native portlet 上的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6872344/

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