Forms Play框架中的多页表单数据验证?

Forms Play框架中的多页表单数据验证?,forms,hibernate,validation,model-view-controller,playframework-2.0,Forms,Hibernate,Validation,Model View Controller,Playframework 2.0,我是java play框架的初学者。我正在构建一个应用程序,它将以多个页面(比如4到5页)的形式传播数据。但所有数据都映射到同一个模型。如何获得用户每页上传的数据,根据模型的约束进行验证,最后将整个数据保存在模型中 例如:-如果第1页有必填的name字段,第2页有必填的嗜好字段。然后,我如何具体地验证该特定页面中填充的数据,导航到最后一页,并在最后一页中保存模型中的所有数据 模型将有60-70个字段 我正在使用Hibernate ORM 谢谢 您可以使用上一个表单的值预先填充下一个表单,将它们保

我是java play框架的初学者。我正在构建一个应用程序,它将以多个页面(比如4到5页)的形式传播数据。但所有数据都映射到同一个模型。如何获得用户每页上传的数据,根据模型的约束进行验证,最后将整个数据保存在模型中

例如:-如果第1页有必填的name字段,第2页有必填的嗜好字段。然后,我如何具体地验证该特定页面中填充的数据,导航到最后一页,并在最后一页中保存模型中的所有数据

模型将有60-70个字段

我正在使用Hibernate ORM


谢谢

您可以使用上一个表单的值预先填充下一个表单,将它们保存在数据库中,转到下一个表单,从值中加载输入的值并预填充下一个表单,等等。为此,请在控制器中使用以下方法:

public static Result fillOutForm1(){
 Hobby form1 = new Hobby("sitting still", "diabetes");
 Form<Hobby > preFilledForm = newHobbyForm.fill(form1);
 return ok(views.html.YOURVIEWCLASS.render(preFilledForm);
}
这在控制器类中:

public static Result sendForm1(){
        Form<Hobby> boundHobby = newHobbyForm.bindFromRequest();
        Hobby newHobby = boundHobby.get();
        //In your hobby class you need a finder implementation, so that you can interact with the database. With save() you put it into the database. This may be different for the database you use!
        newHobby.save();

        return redirect(routes.Application.index());
}
公共静态结果sendForm1(){
Form boundHobby=newHobbyForm.bindFromRequest();
Hobby newHobby=boundHobby.get();
//在您的业余爱好类中,您需要一个finder实现,这样您就可以与数据库交互。使用save()将其放入数据库中。对于您使用的数据库,这可能会有所不同!
newHobby.save();
返回重定向(routes.Application.index());
}
然后,您可以不重定向到索引,而是重定向到具有下一个表单的下一个视图类,然后从db中获取最后的答案,再次预填充它们并将它们放入表单中。根据需要经常这样做

public static Result sendForm1(){
        Form<Hobby> boundHobby = newHobbyForm.bindFromRequest();
        Hobby newHobby = boundHobby.get();
        //In your hobby class you need a finder implementation, so that you can interact with the database. With save() you put it into the database. This may be different for the database you use!
        newHobby.save();

        return redirect(routes.Application.index());
}