我正在为应用程序提供一个动态表单模块,其中有一个随机提交的问题列表为答案。我遇到的问题是正在提交的Answer []数组与View中指定的顺序不同。 (即视图中的answer [0] .value作为答案[3] .value进入控制器)。看起来,不是将视图提交的数组视为一个真正的数组,而是将它们放入一个无序的Set中,然后在转到控制器之前转换回Array。除了将数组视为无序集并且不得不使用手动索引之外,还有什么办法可以解决这个问题。PlayFramework(1.2)。处理控制器中的对象数组
我控制器基本上是:
public static void process(Answer[] answers){ for(int i=0;i<answers.length;i++){ if(answers[i].question.required){ Validation.required("answers["+i+"].value,answers[i].value); } } if(Validation.hasErrors()){ //render the template }else{ //save } }
在我的模板
#{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/> #{/list}
如果你使用'名单'来代替'回答[]数组'? –
2013-05-06 23:45:42