0

我有一个这样的枚举:

public enum MyEnum {
  Apple (1)
  Microsoft (2)
  IBM (4)
  Intel (8)

  int company

  MyEnum(int company) {
    this.company = company
  }
}

我希望 ag:select 框看起来像这样(整数值在 value 属性中很重要):

<select>
  <option value="1">Apple</option>
  <option value="2">Microsoft</option>
  <option value="4">IBM</option>
  <option value="8">Intel</option>
</select>

好的,使用 g:select 没问题:

<g:select name="myenum" from="${MyEnum?.values()*.company}" />

但是当我尝试保存表单时,我总是得到:java.lang.IllegalStateException:无法将类型 [java.lang.String] 的值转换为属性 myenum 所需的类型 [MyEnum]:找不到匹配的编辑器或转换策略

我该如何解决这个问题?

4

2 回答 2

2

尝试:

public enum MyEnum {
  Apple (1)
  Microsoft (2)
  IBM (4)
  Intel (8)

  int company

  MyEnum(int company) {
    this.company = company
  }

  String toString() { return company }
  String getKey() { name() }
}

然后修改标签

<g:select name="myenum" from="${MyEnum?.values()*.company}" optionKey="key" />
于 2012-06-30T14:42:02.380 回答
0

现在我使用带有 inList 约束的简单整数而不是枚举。它不一样,但解决了我的问题。

class MyDomain {
    int company
    static constraints = {
        company(inList: [1, 2, 4, 8])
    }
}

形式为:<g:select valueMessagePrefix="company" name="company" from="${MyDomain.constraints.company.inList}" value="${myDomainInstance?.company}"/>

现在我需要使用 i18n 文件(messages.properties):

company.1=Apple
company.2=Microsoft
company.4=IBM
company.8=Intel
于 2012-07-05T08:32:52.297 回答