我正在为一个应用程序工作一个动态表单模块,其中有一个随机的问题列表作为答案提交。我遇到的问题是正在提交的 Answer[] 数组与视图中指定的顺序不同。(即视图中的 answer[0].value 作为 answer[3].value 进入控制器)。似乎不是将视图提交的数组视为真正的数组,而是将它们放入无序集,然后在到达控制器之前转换回数组。除了将数组视为无序集并且必须使用手动索引之外,还有什么方法可以解决这个问题。
我的控制器基本上是:
公共静态无效进程(Answer[] 答案){ for(int i=0;i<answers.length;i++){ 如果(答案[i].question.required){ Validation.required("answers["+i+"].value,answers[i].value); } } 如果(验证。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/> #{/列表}