如何创建一个与Grails一起使用的枚举

时间:2013-01-17 17:53:57

标签: grails enums

Grails 2.2

所以这应该很简单,但我不断得到相同的错误信息:

Class java.lang.IllegalArgumentException
Message No enum constant myPackageName.RequestType.Banner

这是我的班级:

public enum RequestType {
    BANNER("Banner"), OTHER("Other")

    final String value

    RequestType(String value) { this.value = value }

    String toString() { value }
}

这让我起了墙!!

编辑:Stacktrace

No enum constant myPackageName.RequestType.Banner. Stacktrace follows:
java.lang.IllegalArgumentException: No enum constant myPackageName.RequestType.Banner
    at java.lang.Enum.valueOf(Enum.java:236)
    at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:108)
    at ysuprojects.ProjectService.viewableProjects(ProjectService.groovy:115)
    at ysuprojects.ProjectService.getIndexModel(ProjectService.groovy:422)
    at ysuprojects.ProjectController.index(ProjectController.groovy:25)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

以下是它在课堂上的使用方法

class Project {
    ...
    RequestType requestType
    ...
}

1 个答案:

答案 0 :(得分:3)

好的 - 所以这就是发生的事情。

我从使用String切换到使用Enum。现有数据库在字段中有"Banner",导致此错误。我将字段更改为"BANNER",我不再收到此错误。

Grails正在尝试Enum.valueOf(RequestType, "Banner")