2010-06-16 70 views
7

我想使用Enum來表示一些選擇值。在/src/groovy文件夾,包com.test下,我有這樣的枚舉:如何在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 

我在做什麼錯?


更新:我清理和重新編譯後,錯誤代碼更改爲:

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

好像有什麼不對在訪問枚舉值的方式,但我不知道什麼。

回答

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 } 
}