我正在使用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