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,并编写了自己的方法来从挂钩中获取正确的描述性名称。     

要回复问题请先登录注册