数据绑定到 Grails 中命令的枚举

Dón*_*nal 5 data-binding grails groovy

我有一堂课:

class User {
    Set<Foo> foos = []
}
Run Code Online (Sandbox Code Playgroud)

Foo枚举在哪里:

class Foo { A, B, C, D}
Run Code Online (Sandbox Code Playgroud)

我有一个带有类型参数的控制器操作 User

def someAction = {User user ->
    // impl omitted   
}
Run Code Online (Sandbox Code Playgroud)

我在 GSP 中创建了一个多选

<g:select name="foos" multiple="true" from="${Foo.values()}"/>
Run Code Online (Sandbox Code Playgroud)

但是当我提交表单时,选定的值不会绑定到命令对象的foos属性User。我究竟做错了什么?

Ray*_*yek 2

http://www.grails.org/TipsAndTricks

枚举用法

如果您想在元素中使用带有“value”字符串属性(一种非常常见的习惯用法)的枚举,请尝试以下操作:

enum Rating {
    G("G"),PG("PG"),PG13("PG-13"),R("R"),NC17("NC-17"),NR("Not Rated")

    final String value

    Rating(String value) { this.value = value }

    String toString() { value }

    String getKey() { name() } 
}
Run Code Online (Sandbox Code Playgroud)

然后将 optionKey="key" 添加到您的标签中。图片来源:格雷格·博林格