Forms Grails表单提交用字符串填充整数字段

Forms Grails表单提交用字符串填充整数字段,forms,grails,groovy,Forms,Grails,Groovy,我有一个以整数作为键的映射,但是当我的表单提交时,该键变成了字符串 1) 我甚至不明白这怎么可能。我的映射明确指出,只有整数可以是键,但它却被字符串填充?可能只是一些很棒的东西 2) 假设#1只是一个奇怪的groovy东西,我怎么能强迫我的问题映射键集像我希望的那样填充整数而不是字符串呢 class ApplicationCommand implements Validateable { Map<Integer,String[]> questions = new Linked

我有一个以整数作为键的映射,但是当我的表单提交时,该键变成了字符串

1) 我甚至不明白这怎么可能。我的映射明确指出,只有整数可以是键,但它却被字符串填充?可能只是一些很棒的东西

2) 假设#1只是一个奇怪的groovy东西,我怎么能强迫我的
问题
映射键集像我希望的那样填充整数而不是字符串呢

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

    ....
}
类应用程序命令并实现可验证的{
映射问题=新建LinkedHashMap();
}
def保存(应用程序命令和命令){
System.out.println(cmd.questions.containsKey(14));//FALSE
System.out.println(cmd.questions.containsKey(“14”);//TRUE
....
}

编辑:Grails 3.1

我认为您需要使用一个

map.getInt(key)

我不确定有没有更好的办法,马上。当提交多个应解释为列表的同名值时,该类也非常有用。

文本字段名称不应该只是“questions[14]”而不是“cmd.questions[14]”吗?顺便问一下,哪个grails版本?@aldrin如果我不添加
cmd
,那么我的命令对象就根本不会被填充。Grails3.1,我用这些信息更新了我的OP。它在Grails2.x中的工作与预期的一样,所以他们一定在Grails3中做了一些更改。肯定觉得很奇怪,可能是个虫子。@aldrin也许,我不知道。关于Grails的很多事情让人感觉不太对劲,但事实证明它是设计出来的,所以我不再质疑它,我只是想知道如何使用它。