我有一个班级:
class User {
Set<Foo> foos = []
}
其中Foo
是枚举:
class Foo { A, B, C, D}
我的控制器操作的参数类型为User
def someAction = {User user ->
// impl omitted
}
我在GSP中创建了一个多选
<g:select name="foos" multiple="true" from="${Foo.values()}"/>
但是当我提交表单时,所选值不会绑定到foos
命令对象的User
属性。我做错了什么?
答案 0 :(得分: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() }
}
然后将optionKey =“key”添加到您的代码中。图片来源:Gregg Bolinger
答案 1 :(得分:0)
这本身并不是一个真正的答案。但我不能在评论中发布这个细节。我刚刚创建了以下内容:
enum State {
OK,KS,FL,MA
}
class User {
Set<State> states = []
static constraints = {
}
}
<g:form controller="home" action="save">
<g:select name="states" multiple="true" from="${com.orm.fun.State.values()}"/>
<g:submitButton name="save" value="Save"/>
</g:form>
// controller action
def save = { User user ->
// I didn't do anything here except
// set a breakpoint for debugging
}
这就是我得到的:
所以我不完全确定你和我之间有什么不同,除了enum的名字。你能看到什么吗?