Play framework 多个实体的Form对象

Play framework Form object for multiple entities

我在使用 Play 2.2.1 时卡住了。基本上我在 Jobportal 应用程序中工作,我遇到 Jobseeker 需要填写 his/her skills(技能名称、技能经验等)的情况。因此,为此我创建了一个单独的实体 Skill.

我的问题是用户可以选择添加多项技能。所以如果用户只输入一项技能我可以简单地做:

Form<Skill> sk=Form.form(Skill.class).bindRequest();

但是如果用户输入多个技能,我如何从表单中检索这些多个对象?我需要这样的东西:

Form<List<Skill>> sk=Form.form(Skill.class).bindRequest();

意思是从表单中获取实体对象列表,上面这行只是对我想要的解释。

我搜索过这个主题,但没有找到任何结果。我也知道我可以简单地使用 DynamicFormrequest 但它会给我单独的列,而不是实体对象。

这可能吗?如果是,我该如何实现?

Skill class 创建包装器 class,如下所示:

public class Skills {

    private List<Skill> skills;

    // setters and getters

}

并根据请求绑定它:

Form<Skills> skills = Form.form(Skills.class).bindRequest();

如果你post一个json,让它看起来像这样:

{
   "skills": [
      {
         // skill 1
      },
      {
         // skill 2
      }
   ]
}

绑定多个对象有多种方式Mon Calamari展示了一种。您也可以只使用 DynamicForm 不带任何形式的 bindFromRequest() 然后自己更新给定的技能。

无论如何......我个人肯定会用 jQuery 和 AJAX 来做,那会更 modern 方法,这样你只需发送您想要 add/edit/delete 的 skill 的请求,其他的则保持不变,AJAX returns 操作状态,这样您就可以修改页面而无需重新加载和重新每次渲染整个视图。