如何解决Liferay-用于GroupWrapper的钩子
| 我正在尝试覆盖com.liferay.portal.model.Group中的getDescriptiveName()方法 我找到了一个包装器(com.liferay.portal.model.GroupWrapper),所以我尝试按照文档中的说明编写一个钩子:liferay-hook.xml
:
<service>
<service-type>com.liferay.portal.model.GroupWrapper</service-type>
<service-impl>fr.villedeniort.hook.expando.GroupWrapperImpl</service-impl>
</service>
fr.villedeniort.hook.expando.GroupWrapperImpl.java
:
public class GroupWrapperImpl extends GroupWrapper {
public GroupWrapperImpl(Group group) {
super(group);
}
@Override
public java.lang.String getDescriptiveName()
throws com.liferay.portal.kernel.exception.PortalException,com.liferay.portal.kernel.exception.SystemException {
return super.getDescriptiveName();
}
部署钩子后,将引发异常:
java.lang.NoSuchMethodException: fr.villedeniort.hook.expando.GroupWrapperImpl.<init>(com.liferay.portal.model.GroupWrapper)
我浏览了发现在此部分中断的代码,这是我忽略的原因:
Constructor<?> serviceImplConstructor = serviceImplClass.getConstructor(new Class<?>[] {serviceTypeClass});
此时,变量具有以下值:
serviceType \"com.liferay.portal.model.GroupWrapper\" (id=14829)
serviceImpl \"fr.villedeniort.hook.expando.GroupWrapperImpl\" (id=14830)
serviceTypeClass Class<T> (com.liferay.portal.model.GroupWrapper) (id=14831)
serviceImplClass Class<T> (fr.villedeniort.hook.expando.GroupWrapperImpl) (id=14832)
你有什么主意吗?
谢谢!
解决方法
您还应该有一个没有任何参数的构造函数。现在,您有了一个带有构造函数参数的函数,但是没有Java在创建类实例时会搜索的纯类构造函数。在调用纯构造函数之后,java然后调用实参。
在其他情况下,我也遇到类似的情况,这就是解决方案。错误消息上的“ 7”标记涉及这种问题。
,显然,除了服务之外,不可能钩住其他类,因此我不得不寻找另一种方法。就我而言,我挂钩了一个JSP,并编写了自己的方法来从挂钩中获取正确的描述性名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。