【发布时间】:2016-03-21 20:09:31
【问题描述】:
我有一个以整数作为键的映射,但是当我提交表单时,该键变成了字符串。
1) 我什至不明白这怎么可能。我的地图明确指出只有整数可以是键,但它是用字符串填充的?可能只是一些 Groovy 的东西......
2) 假设 #1 只是一些奇怪的东西,我怎么能强制我的 questions 映射 keySet 填充我想要的整数而不是字符串?
class ApplicationCommand implements Validateable {
Map<Integer,String[]> questions = new LinkedHashMap<Integer,String[]>();
}
<g:textField name="cmd.questions[14]" value="${cmd.questions[14][0]}" />
def save(ApplicationCommand cmd) {
System.out.println(cmd.questions.containsKey(14)); //FALSE
System.out.println(cmd.questions.containsKey("14")); //TRUE
....
}
编辑:Grails 3.1
【问题讨论】:
-
textField 名称不应该只是 "questions[14]" 而不是 "cmd.questions[14]" 吗?顺便说一句,哪个 grails 版本?
-
@aldrin 如果我不添加
cmd那么我的命令对象根本不会被填充。 Grails 3.1,我用该信息更新了我的 OP。 -
它在 Grails 2.x 中按预期工作,所以他们一定在 3 中改变了一些东西。绝对感觉很奇怪,可能是一个错误。
-
@aldrin 也许吧,我不知道。很多关于 Grails 的东西都感觉不对,但事实证明它是设计使然,所以我不再质疑它,我只是想知道如何使用它。