0

次のような列挙があります。

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

  int company

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

そして、次のように ag:select ボックスが必要です (値属性では整数値が重要です)。

<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: Cannot convert value of type [java.lang.String] to required type [MyEnum] for property myenum: no matching editors or conversion strategy found

どうすればこれを解決できますか?

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 に答える