我需要对liferay 7私有消息传递portlet进行一些更改,我想问:
有没有办法使用模块覆盖liferay门户类?在我的情况下,我想更改类PrivateMessagingUtil。
致以最诚挚的问候,
丹尼尔
答案 0 :(得分:1)
不看代码:如果有一个扩展点:使用它。当您为要更改的类命名时,我假设没有,所以扩展点可能在其他调用此方法的类中。并非每个班级都有一个扩展点。如果其他一切都失败了,你必须咬紧牙关并维护一个分支版本 - 至少它(可能,我还没看过代码)一个插件,所以尺寸和影响会相对有限。
如果您想做出的更改背后有一个好故事,请file a ticket,更好的建议实施。与组件所有者讨论。
...并在此单独回答Daniele的评论问题:我没有看到代码 - 这就是这类问题的问题:我心情不同。我拒绝了这个问题"我想改变Xxx类中的一些代码"在评论中提出反问题:" 通常有更好的解决方案,但是当提出这样的技术问题时,任何答案都可能不是最理想的。因为Breiti选择了他打算用来解决问题的解决方案,所以我坚持自己的观点 - 随意添加一个更好的答案,假设他的实际意图。
答案 1 :(得分: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文档中的链接:
我希望它可以帮到你。