0

I need to make some changes to the liferay 7 private messaging portlet and I wanted to ask:

Is there a way to override liferay portal classes using a module ? In my case I want to change the class PrivateMessagingUtil.

Best regards,

Daniel

4

2 回答 2

1

不看代码:如果有扩展点:使用它。当您命名要更改的类时,我假设没有,因此扩展点可能位于调用此方法的其他类中。不是每个类都有扩展点。如果其他一切都失败了,你将不得不硬着头皮维护一个分支版本——至少它(可能,我没有看过代码)是一个插件,所以大小和影响会相对有限。

如果您想要进行的更改背后有一个好故事,请提交一张票,如果提出实施方案会更好。与组件所有者讨论。

...并在这里分别回答 Daniele 的评论问题:我没有查看代码 - 这就是此类问题的问题:在不同的心情下,我会拒绝这个问题“我想更改 Xxx 类中的一些代码”在评论中有一个反问:“你到底达到什么目的?” 经常有更好的解决方案,但是当提出这样的技术问题时,任何答案都可能不是最理想的。因为 Breiti 选择了他打算用来解决他的问题的解决方案,所以我坚持我的话——假设他的实际意图,请随意添加一个更好的答案。

于 2016-11-20T20:59:58.000 回答
1

您可以自定义 Liferay 7 服务,创建servicewrapper 项目类型。您可以使用命令行创建它:

blade create -t service-wrapper -p com.liferay.docs.serviceoverride -c UserLocalServiceOverride -s com.liferay.portal.kernel.service.UserLocalServiceWrapper service-override

我需要未发送给用户的密码更改确认电子邮件,因此我覆盖了 UserLocalServiceWrapper 类中的 updatePassword 方法并将silentUpdate 传递为true。

@Component(
immediate = true,
property = {
},
service = ServiceWrapper.class)

public class UserLocalServiceOverride extends UserLocalServiceWrapper {

public UserLocalServiceOverride() {
    super(null);
}

@Override
public com.liferay.portal.kernel.model.User updatePassword(long userId,
    java.lang.String password1, java.lang.String password2,
    boolean passwordReset)
    throws com.liferay.portal.kernel.exception.PortalException {

    return updatePassword(userId,
            password1, password2,
            passwordReset, true);
}

@Override
public com.liferay.portal.kernel.model.User updatePassword(long userId,
    java.lang.String password1, java.lang.String password2,
    boolean passwordReset, boolean silentUpdate)
    throws com.liferay.portal.kernel.exception.PortalException {

    return super.updatePassword(userId, password1, password2,
        passwordReset, silentUpdate);
}
}

查看 Liferay 文档中的此链接:

https://dev.liferay.com/es/develop/tutorials/-/knowledge_base/7-0/customizing-liferay-services-service-wrappers

我希望它对你有帮助。

于 2018-01-11T07:09:38.553 回答