如何显示多个对象表单的错误 - 使用Java Play Framework 2

时间:2013-08-07 11:03:00

标签: java forms playframework-2.0

我在显示包含该类的多个对象的表单错误时遇到问题,在我的例子中是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
}

1 个答案:

答案 0 :(得分:1)

get方法触发验证,因此您无法在视图中使用它,您可以将该集传递给另一个变量查看。