我正在使用Play框架,并且我有通用用例来更新带有控制器操作中表单的模型。但是我有一些理解它背后的概念的问题,因为如果你有一个包含模型的所有属性的表单,那么这个工作就正常了。如果您只有部分表单,例如只编辑用户模型的密码,此方法破坏模型,因为它将模型的其他属性设置为null。 是否有任何“官方”解决方案?任何方式播放只更新现有的属性?玩框架处理部分表格
public static Result update(Long id) {
Model model = Model.findById(id);
Form<Model> filledForm = modelForm.bindFromRequest();
if (filledForm.hasErrors()) {
return badRequest(edit.render(filledForm));
} else {
model.update();
flash("message", "Created new Model!");
return ok(index.render());
}
}
大概溶液中的事实以某种方式规定该bindFormRequest()方法可以与附加的参数来调用,像字符串或地图字符串?但我找不到那个目的。对此的一些洞察力也会很好。 非常感谢!
这是一个很好的通用方法。但是你究竟在哪里实现了它?在您的特定项目中还是直接在Play核心中?并且你有什么想法bindFromRequest方法的已经存在的参数的目的是什么? – linsenfips
我在扩展Play核心Form类的特定项目中创建了一个CustomForm类。所以我只需要使用我的CustomForm类而不是Play核心的一个,当我需要这个部分绑定功能。 'data'参数包含来自请求的数据(查看Play核心'Form.bindFromRequest()'源代码,它构造一个数据Map并将其提供给'bind()'方法)。 'allowedFields'是一个可选参数,用于限制绑定数据(这是一个Spring DataBinder功能)。 – mguillermin
我想我错了,但不限制我想要的绑定数据? – linsenfips