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
}
4

1 に答える 1