2010-06-16 6 views
7

Je veux utiliser une énumération pour représenter certaines valeurs de sélection. Dans le dossier /src/groovy, sous le package com.test, j'ai cette Enum:Comment utiliser Enum dans grails (pas dans la classe de domaine)

package com.test 

public enum TabSelectorEnum { 
    A(1), B(2) 

    private final int value 
    public int value() {return value} 

} 

Maintenant, je suis en train d'y accéder à partir du contrôleur comme:

TabSelectorEnum.B.value() 

mais il renvoie une exception:

Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoClassDefFoundError: Could not initialize class com.test.TabSelectorEnum 

Qu'est-ce que je fais mal?


Mise à jour: Après avoir nettoyé et recompilé, le code d'erreur changé:

groovy.lang.GroovyRuntimeException: Could not find matching constructor for: com.test.TabSelectorEnum(java.lang.String, java.lang.Integer, java.lang.Integer) 

Il semble qu'il y ait quelque chose de mal dans la façon dont l'accès à la valeur de l'Enum, mais je ne le font pas savoir quoi.

Répondre

15

Vous n'avez pas défini un constructeur pour la valeur int:

package com.test 

enum TabSelectorEnum { 
    A(1), 
    B(2) 

    private final int value 

    private TabSelectorEnum(int value) { 
     this.value = value 
    } 

    int value() { value } 
} 
Questions connexes