Java 域类中的grails枚举类型

Java 域类中的grails枚举类型,java,grails,enums,Java,Grails,Enums,我使用Grails1.3.2和hbase 我有一个域类,其中一个字段是枚举类型: class MyDomainClass{ MyEnum enumVal //.... } public enum MyEnum { val1("val1"), val2("val2") final String value MyEnum (String value) { this.value = value } String

我使用Grails1.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>

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

这似乎是一个数据类型转换问题。你可以尝试:

def domainObject = new MyDomainClass()
def enumValue = myPack.MyEnum.valueOf(params.enumVal) // This is the conversion.
然后,用新的
enumValue
分配域对象

  • GSP中“
    MyEnum
    ”后面的空格和错误消息让我怀疑,您能将其从GSP中删除吗
  • 您不需要?,因为MyEnum类应该始终存在
  • 我相信您不需要
    optionKey
    ,特别是如果您已经重写了
    MyEnum.toString()
  • 我们通过以下方式从枚举中写入
    选择
    s:


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

    这可能是hbase的问题,因为我到处都有这样的代码,而且工作正常,但我使用的是普通的旧MySQL。我可以获取枚举值,但无法将其保存在db中。Victor感谢您的回复…我已经更改了视图,但是我得到了异常:异常消息:没有方法的签名:myPack.MyEnum.toFriendlyString()适用于参数类型:()值:[]导致的原因:错误执行标记:错误计算表达式[MyEnum.values()*.toFriendlyString()]第[15]行:groovy.lang.MissingMethodException:抱歉。这是我们自己添加的方法,它返回本地化字符串。
    def domainObject = new MyDomainClass()
    def enumValue = myPack.MyEnum.valueOf(params.enumVal) // This is the conversion.