Как использовать Enum в Grails (не в доменном классе) - PullRequest
7 голосов
/ 16 июня 2010

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

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 Ответ

15 голосов
/ 16 июня 2010

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

package com.test

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

   private final int value

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

   int value() { value }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...