我在显示包含该类的多个对象的表单错误时遇到问题,在我的例子中是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 }
答案 0 :(得分:1)
get方法触发验证,因此您无法在视图中使用它,您可以将该集传递给另一个变量查看。