有人可以給我一個簡單的形式的例子,當給定一個簡單的對象,你可以點擊保存並知道它具有所有需要保存對象的數據(包括id ?)PlayFramework java和那玩〜引導幫手
使用播放found here
(這只是一個佔位符,所以我可以張貼的答案 - 爲什麼沒有人想放棄,在他們的框架工作的例子嘆氣)
有人可以給我一個簡單的形式的例子,當給定一個簡單的對象,你可以點擊保存並知道它具有所有需要保存對象的數據(包括id ?)PlayFramework java和那玩〜引導幫手
使用播放found here
(這只是一個佔位符,所以我可以張貼的答案 - 爲什麼沒有人想放棄,在他們的框架工作的例子嘆氣)
這是不太明顯?我想 - 我是來自學校,在那裏你隱藏了身份證,在某種隱藏的領域或某些領域。
也許遊戲引導代碼庫有一些很好的做法,但我沒有在文檔中看到它 - 所以在這裏,我的朋友是如何獲取一些對象,爲它做一個表單,然後能夠更新該目標。
爲了簡潔起見,我已經將db代碼留出了。
首先,這是我的操作 - 在我的控制器類中 - 從數據庫獲取我的模型。請注意,我使用的支持模型與數據庫返回一樣,使用私有字段等(所以,您知道,只是一個普通的POJO)。
public Result editLesson(int languageId){
Form<Language> languageForm = formFactory.form(Language.class);
try {
//here da is just how i get things from the database.
Language language = da.getLanguage(languageId);
languageForm = languageForm.fill(language);
} catch (SQLException e){ //SAD! }
return ok(editLesson.render(languageForm));
}
整潔。所以這只是獲取形式,並將其傳遞給某個頁面以供查看。請注意,formFactory需要神奇地注入您的控制器。接下來,該頁面是什麼樣子的?
嗯,這是一個常用的模板,只是:
我有這個作爲我的第一行:@import b3.vertical.fieldConstructor
和我想要的形式展現我有
@b3.form(routes.HomeController.saveLesson) {
@b3.hidden("id", languageForm("id").value, 'attr -> false)
@b3.text(languageForm("name"), '_label -> "Title", 'placeholder -> "The Title")
@b3.text(languageForm("description"), '_label -> "Description", 'placeholder -> "The Description")
@b3.submit('class -> "btn btn-default"){ <span class="glyphicon glyphicon-ok"></span> Save }
}
好,所以在這裏我們有表單 - 它告訴表單要走哪裏(我們將在5秒內查看路線),並放置可編輯的字段。我將id字段設置爲隱藏在此處。對於我來說,如何訪問它並不直觀 - 但是在那裏。
我的路線文件中有這樣的:
GET /edit-lesson/:languageId controllers.HomeController.editLesson(languageId: Integer)
POST /save-lesson/ controllers.HomeController.saveLesson()
第一行是如何開始編輯頁面。第二行是我想去保存這些編輯的課程的地方。我使用routes.HomeController.saveLesson
來反向指向保存課程。如果你的控制器被稱爲Bob(啞名),你應該使用routes.Bob.saveLesson
鏈接到saveLesson
方法。
最後,我saveLesson代碼如下所示(鮑勃〜呃,HomeController的)
public Result saveLesson(){
Form<Language> languageForm = formFactory.form(Language.class).bindFromRequest();
if (languageForm.hasErrors()){
return badRequest(editLesson.render(languageForm));
} else {
Language language = languageForm.get();
try {
da.saveLanguage(language);
return ok(share.render());
} catch (SQLException e){
//TODO: log this, but really we don't have much to do, do we?
return ok(e.getMessage());
}
}
}
注意數據綁定在遊戲搞砸了 - 如果你的表格有錯誤,通話.get()
會失敗,所以如果你的控制器出於某種原因需要一些表單數據,你需要檢查表單是否有錯誤 - 如果沒有,請做任何事情。如果確實是,您需要在表單對象上使用.field(String).value()
,您無法將表單對象轉換爲綁定(通過get()
)〜這在scala頁面上有所不同,但不在java頁面上!