2010-06-16 2 views
7

Я хочу использовать Enum для представления некоторых значений выбора. В папке /src/groovy под пакетом com.test, у меня есть этот Enum:Как использовать Enum в grails (не в классе домена)

package com.test 

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

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

} 

Теперь я пытаюсь получить к нему доступ из контроллера, как:

TabSelectorEnum.B.value() 

но он бросает исключение:

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

Что я делаю неправильно?


Update: После того, как я очистил и перекомпилировать код ошибки меняется на:

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

Похоже, что что-то не так в пути обращающегося значение Enum, но я не Знаешь что.

ответ

15

Вы не определили конструктор для значения INT:

package com.test 

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

    private final int value 

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

    int value() { value } 
} 
Смежные вопросы