回答として送信される質問のランダムなリストがあるアプリケーションの動的フォーム モジュールを使用しています。私が抱えている問題は、送信されている 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/> #{/リスト}