如何替换Liferay本机portlet上的函数

mic*_*ico 7 portlet liferay liferay-6

我正在改变Liferay Intallation附带的本地Liferay portlet.如何通过钩子或类似的方法将函数更改为我自己的实现?

我已经阅读了如何制作前置条件和后置条件以及如何创建接口的新实现,但我不知道如何在一个我希望保留的portlet中替换随机类中的随机函数,否则就像它最初一样.

rp.*_*rp. 15

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

大多数钩子功能是通过位于/ docroot/WEB-INF目录中的liferay-hook.xml文件描述的.这是最常用的方法.

自定义JSP

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

<custom-jsp-dir>/META-INF/custom_jsps</custom-jsp-dir>
Run Code Online (Sandbox Code Playgroud)

此元素定义了要覆盖JSP的位置.例如,您可能希望在以下位置重写文档库portlet的view.jsp:

[custom-jsp-dir]/html/portlet/document_library/view.jsp
Run Code Online (Sandbox Code Playgroud)

模特听众

对于这个,你必须定义一个通常存储在的portal.property文件,

/docroot/WEB-INF/src/portal.property
Run Code Online (Sandbox Code Playgroud)

并告诉liferay-hook.xml它的位置.以下是上述例子,

<portal-properties>portal.properties</portal-properties>
Run Code Online (Sandbox Code Playgroud)

例如,如果您想要收听用户中的更改,您可以在该属性中写入,

value.object.listener.com.liferay.portal.model.User=com.my.example.UserListener;
Run Code Online (Sandbox Code Playgroud)

其格式如下,

value.object.listener.[class-to-listen]=[my-listener-class]
Run Code Online (Sandbox Code Playgroud)

你的班级应该实施com.liferay.portal.model.BaseModelListener.

在这里,您可以收听添加,更新,删除等活动.

扩展\覆盖服务

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

<service>
    <service-type>com.liferay.portal.service.UserService</service-type>
    <service-impl>my.example.service.UserServiceImpl</service-impl>
</service>
Run Code Online (Sandbox Code Playgroud)

在这里,您的实现应该扩展特定服务的正确包装类.例如,对于上面的示例,是

com.liferay.portal.service.UserServiceWrapper;
Run Code Online (Sandbox Code Playgroud)

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

自定义Struts操作

(仅适用于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>
Run Code Online (Sandbox Code Playgroud)

你需要扩展,

com.liferay.portal.kernel.struts.BaseStrutsAction
Run Code Online (Sandbox Code Playgroud)

并且您可以访问该请求并执行自定义操作.与自定义JSP结合使用时功能非常强大.

祝好运!

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

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