0
Integerをキーとして使用するマップがありますが、フォームが送信されるとそのキーはStringになります。Grails form submitは、Integerフィールドに文字列を設定します。
1)私はそれが可能であることを理解していません。私のマップは、Integersだけがキーになることができると明言していますが、文字列でデータが取り込まれています。おそらくちょうどいくつかのGroovyのもの...
2)#1はちょっと変わったものだと思いますが、どうすればよいでしょうか?questions
マップキーセットにStringsの代わりにIntegersが設定されていますか?
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
....
}
EDIT:Grailsの3.1
「cmd.questions [14]」ではなく「questions [14]」だけでなく、 btw、バージョンをgrails? – aldrin
@aldrinもし私が 'cmd'を追加しなければ、私のコマンドオブジェクトはまったく投入されません。 Grails 3.1、私はその情報でOPを更新しました。 –
Grails 2.xでは期待通りに動作しますので、3で何かを変更したに違いありません。確かに奇妙で、バグかもしれません。 – aldrin