簡體   English   中英

Grails:java.lang.IllegalArgumentException:沒有枚舉const

[英]Grails: java.lang.IllegalArgumentException: No enum const

我正在嘗試使用Grails內置的應用程序工作,但是出現了我不明白的錯誤。 基本上,我有一個枚舉:

package com.wbr.manning.common
public enum ChapterType {
  CHAPTER("chapter"), PREFACE("preface"), APPENDIX("appendix"), PART("part")
  ChapterType(String value) { this.value = value }
  String value
  String getKey() { name() }
  String toString() { value }
}

但是當我嘗試列出Chapter對象時,我得到:

java.lang.IllegalArgumentException: No enum const class com.wbr.manning.common.ChapterType.part
    at java.lang.Enum.valueOf(Enum.java:196)
    at grails.orm.HibernateCriteriaBuilder.invokeMethod(HibernateCriteriaBuilder.java:1163)
    at com.wbr.manning.agileAuthor.AAChapterController$_closure3.doCall(AAChapterController.groovy:39)
    at com.wbr.manning.agileAuthor.AAChapterController$_closure3.doCall(AAChapterController.groovy)
    at java.lang.Thread.run(Thread.java:662)
2012-04-02 09:55:23,401 [http-8080-1] ERROR common.ErrorsController  - org.codehaus.groovy.grails.web.errors.GrailsWrappedRuntimeException: No enum const class com.wbr.manning.common.ChapterType.part

對我在這里做錯的任何想法嗎? 我的枚舉是否正確,還是需要查看調用代碼?

謝謝!

No enum const class com.wbr.manning.common.ChapterType.part

應該是ChapterType.PART 必須尊重大小寫。

如果要基於其值查找Enum,則需要向枚舉添加靜態方法,如下所示:

static ChapterType fromString( type ) {
  ChapterType.values().find { it.value == type }
}

然后,您可以執行以下操作:

ChapterType c = ChapterType.fromString( 'part' )

問題出在您的調用代碼中。 AAChapterController.groovy的第39行上,正在建立一個標准查詢,該查詢調用

ChapterType.valueOf("part")

但它應該

ChapterType.valueOf("PART")

如果在這里看不到文字字符串"part" ,請查找一個String變量,然后在其上調用.toUpperCase()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM