如何在grails中使用Enum(不在域类中)

时间:2010-06-16 02:59:57

标签: grails groovy enums

我想使用Enum来表示一些选择值。在/src/groovy文件夹的com.test包下,我有这个枚举:

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)

在访问Enum的价值方面似乎有问题,但我不知道是什么。

1 个答案:

答案 0 :(得分: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 }
}