java - 领域类中的 Grails 枚举类型

标签 java grails enums

我使用 grails 1.3.2 和 hbase..

我有域类,其中一个字段是枚举类型:

class MyDomainClass{

     MyEnum enumVal

        //....

}

public enum MyEnum {

    val1("val1"),
    val2("val2")

   final String value
   MyEnum (String value) {
      this.value = value
    }
   String toString() { value }
   String getKey() { name() }
}


<g:form action="create">
   <g:select name="enumVal" from="${MyEnum ?.values()}" optionKey="key" />
   <g:submitButton name="createOb" value="CreateOb"/>
</g:form>

“创建”操作必须将选定的值保存在数据库中。

当我提交时出现异常:

Cannot cast object 'val1' with class 'java.lang.String' to class 'myPack.MyEnum '

有没有办法将枚举值保存为字符串?

最佳答案

  1. GSP 中“MyEnum”后的空格和错误消息让我怀疑,你能把它从 GSP 中删除吗?
  2. 您不需要 ?,因为 MyEnum 类应该始终存在。
  3. 我相信您不需要 optionKey,尤其是当您覆盖了 MyEnum.toString() 时。
  4. 我们这样从枚举中编写select:

其中 toFriendlyString() 是我们的枚举方法,它返回用户可读的字符串表示形式。

关于java - 领域类中的 Grails 枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5247568/

相关文章:

java - 不能从静态上下文中引用非静态方法 toString()

java - 历史数组

java - 线程中出现异常 "main"java.lang.RuntimeException : javax. mail.MessagingException : Could not connect to SMTP host: smtp. gmail.com,端口:578;

maven - 如何让 grails 2.4.3 解决 <project-dir>/lib 中的依赖关系?

java - 查找 String 是否不在 ENUM 列表中的最佳方法

ios - 如何将枚举类型的参数传递给 .h 和 .m 文件中的方法

c++ - 为什么 C++ numeric_limits<enum_type>::max() == 0?

javafx choicebox触发onchange方法

mongodb - grails mongodb不支持isDirty()方法吗

javascript - 如何添加多个g :select