2011-05-23 10 views
0

GroupWrapper Je suis en train de remplacer la méthode dans com.liferay.portal.model.GroupLiferay - Crochet pour

J'ai trouvé une enveloppe (com.liferay.portal.model.GroupWrapper) getDescriptiveName(), donc J'ai essayé d'écrire un crochet comme écrit dans la documentation:

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(); 
} 

Lorsque le crochet est déployé, il déclenche une exception:

java.lang.NoSuchMethodException: fr.villedeniort.hook.expando.GroupWrapperImpl.<init>(com.liferay.portal.model.GroupWrapper) 

je passe en revue le code que je trouve que ça casse à cette partie pour une raison que j'ignore:

Constructor<?> serviceImplConstructor = serviceImplClass.getConstructor(new Class<?>[] {serviceTypeClass}); 

À ce stade , les variables ont ces valeurs:

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) 

Avez-vous une idée?

Merci!

Répondre

0

Apparemment, il n'est pas possible de connecter d'autres classes que les services, donc j'ai dû trouver une autre méthode. Pour mon cas, j'ai accroché un JSP et écrit ma propre méthode pour obtenir le bon nom descriptif du crochet.

0

Vous devez également avoir un constructeur sans argument. Vous en avez maintenant un avec les arguments constuctor, mais il n'y a pas de constructeur de classe pur que java recherche quand il fait une instance de classe. Après avoir appelé le constructeur pur, java appelle alors le constructeur argumenté.

J'avais un cas similaire dans un autre contexte et c'était la solution. <init> tag sur le message d'erreur se réfère à ce genre de problème.

Questions connexes