回答として送信される質問のランダムなリストがあるアプリケーションの動的フォーム モジュールを使用しています。私が抱えている問題は、送信されている Answer[] 配列がビューで指定された順序と同じでないことです。(つまり、ビューの answer[0].value は answer[3].value としてコントローラに入ります)。ビューによって送信された配列を真の配列として扱う代わりに、それらは順序付けられていないセットになり、コントローラーに到達する前に配列に変換されているようです。配列を順序付けられていないセットとして扱い、手動インデックスを使用する以外に、これを回避する方法はありますか。
私のコントローラーは基本的に次のとおりです。
public static void process(Answer[] 回答){
for(int i=0;i<answers.length;i++){
if(answers[i].question.required){
Validation.required("answers["+i+"].value,answers[i].value);
}
}
if(検証.hasErrors()){
// テンプレートをレンダリングする
}そうしないと{
//保存
}
}
私のテンプレートでは
#{list items:questionSet.questions, as:"question"}
...
<div class="#{if play.data.validation.Validation.hasError("anwsers["+question_index+'].value)}error#{/if}">
<input name="answers[${question_index}].question.id" value="${question.id}"/>
<input name="answers[${question_index}].value" value="${answers[question_index].value}/>
<div/>
#{/リスト}