クラスの複数のオブジェクト (私の場合は ProductMilestone) を含むフォームのエラーを表示するのに問題があります。基本的に、テーブルにすべてのマイルストーンを含むフォームを表示しています。表示と更新は非常にうまく機能します。エラーが発生するとすぐに、「[IllegalStateException: No value]」というエラーでテンプレートを表示できなくなります。これは、誤ったフォームに Form.get() メソッドから受け取った値が含まれていないためです。私の場合は MilestoneSet です。表示されたエラーでこれを機能させるにはどうすればよいですか?
問題は、ビューの for ループです。
意見:
@(milestoneFormSet: Form[ProductMilestone.MilestoneSet], productReleaseId: Long) @*Function called by the for loop in the form just below*@ @milestoneFields(milestone: ProductMilestone, index: Integer) = { //…other fields @inputText(milestoneFormSet("milestoneList[" + index + "].initialDate"), '_label -> "",'class -> "datepicker") …} @form(routes.ProductMilestones.submitEdit(productReleaseId), 'id -> "submitMilestoneEditForm") { @*Here is the problem, when the form has an error I can not access milestoneList using get in the for loop*@ @for((milestone, index) <- milestoneFormSet.get.milestoneList.zipWithIndex) { @milestoneFields(milestone, index) } }
コントローラ:
public static Result submitEdit(Long productReleaseId) { Form<MilestoneSet> filledForm = form(MilestoneSet.class).bindFromRequest(); if (filledForm.hasErrors()) { return badRequest(views.html.milestonesEdit.render(filledForm, productReleaseId)); } else { MilestoneSet newMilestoneSet = filledForm.get(); //...update code }