2010-06-16 11 views
7

Chcę użyć Enum do reprezentowania niektórych wartości selekcji. W folderze /src/groovy, w ramach pakietu com.test, mam ten ENUM:Jak używać Enum w grails (nie w klasie domeny)

package com.test 

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

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

} 

Teraz próbuję uzyskać do niego dostęp z kontrolerem jak:

TabSelectorEnum.B.value() 

ale zgłasza wyjątek:

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

Co robię źle?


Aktualizacja: Po tym, jak czyścić i rekompilacji, kod błędu zmienione na:

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

Wydaje się, że coś jest nie tak w sposób uzyskuje dostęp do wartości wyliczenia, ale nie wiem wiesz co.

Odpowiedz

15

Nie zdefiniować konstruktor dla wartości int:

package com.test 

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

    private final int value 

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

    int value() { value } 
} 
Powiązane problemy