1
我使用Play Framework 2並希望在使用表單和驗證時儘量減少代碼重複。驗證失敗後呈現表單
我控制器呈現形式和處理表單提交:
def create() = Action { implicit request =>
//create form
//DB calls to build comboboxes and tables
Ok(views.html.create(form, ...))
}
def handleCreate() = Action { implicit request =>
createForm.bindFromRequest().fold(
formWithErrors => {
//DB calls to build comboboxes and tables
BadRequest(views.html.create(formWithErrors, ...))
},
obj => {
//other logic
})
}
的問題是在//DB calls to build comboboxes and tables
一部分。我不想重複這部分。當然,我可以將它提取到方法中,然後在create
和handleCreate
方法中調用它。
處理這段代碼是否更優雅?
謝謝!
對於這種情況,是否有任何一種最佳實踐?像DAO這樣的東西? – 1esha
我會依靠常識而不是最佳實踐。如果你的應用程序有DAO,那麼這可能是一個緩存的好地方,但它很大程度上取決於你的用例,可能肯定會出現一些情況,你需要對控制器中的數據庫中的數據進行一些昂貴的映射/合併/在這種情況下,將緩存邏輯放置在控制器中會更好。或者將這個組合邏輯和緩存提取到一個單獨的類中。 – johanandren