PlayFramework java 和 play ~ bootstrap 助手
PlayFramework java and that play ~ bootstrap helper
谁能给我一个简单形式的例子,当给定一个简单的对象时,您可以点击保存并知道它具有保存该对象所需的所有数据(包括 ID?)
使用游戏found here
(这只是一个占位符,所以我可以 post 回答 - 为什么没有人喜欢给出在他们的框架中工作的例子?唉)
我想要的不太明显 - 我来自学校,你 "hide" 表单中的 id,在某种隐藏字段或类似的地方。
也许 play-bootstrap 代码库有一些巧妙的方法来做到这一点,但我没有在文档中看到它 - 所以我的朋友,这里是如何获取一些对象,制作一个表格为此,然后能够更新该对象。
为简洁起见,我省略了数据库代码。
首先,这是我的操作 - 在我的控制器中 class - 从数据库中获取我的模型。请注意,我使用的支持模型与数据库相同 returns,具有私有字段等。(所以,你知道,只是一个通用的 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
到 link 到 saveLesson
方法。
最后,我的 saveLesson 代码看起来像这样(在 Bob ~ erm,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());
}
}
}
注意 数据绑定在 Play 中混乱 - 如果您的表单有错误,调用 .get()
将会失败,所以如果您的控制器需要一些由于某种原因,表单数据,您需要检查表单是否有错误 - 如果没有,请执行任何操作。如果做,则需要在表单对象上使用.field(String).value()
,不能将表单对象转换为绑定(通过get()
)~这个有点exlpained在 scala 页面上,但不在 java 页面上!
谁能给我一个简单形式的例子,当给定一个简单的对象时,您可以点击保存并知道它具有保存该对象所需的所有数据(包括 ID?)
使用游戏found here
(这只是一个占位符,所以我可以 post 回答 - 为什么没有人喜欢给出在他们的框架中工作的例子?唉)
我想要的不太明显 - 我来自学校,你 "hide" 表单中的 id,在某种隐藏字段或类似的地方。
也许 play-bootstrap 代码库有一些巧妙的方法来做到这一点,但我没有在文档中看到它 - 所以我的朋友,这里是如何获取一些对象,制作一个表格为此,然后能够更新该对象。
为简洁起见,我省略了数据库代码。
首先,这是我的操作 - 在我的控制器中 class - 从数据库中获取我的模型。请注意,我使用的支持模型与数据库相同 returns,具有私有字段等。(所以,你知道,只是一个通用的 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
到 link 到 saveLesson
方法。
最后,我的 saveLesson 代码看起来像这样(在 Bob ~ erm,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());
}
}
}
注意 数据绑定在 Play 中混乱 - 如果您的表单有错误,调用 .get()
将会失败,所以如果您的控制器需要一些由于某种原因,表单数据,您需要检查表单是否有错误 - 如果没有,请执行任何操作。如果做,则需要在表单对象上使用.field(String).value()
,不能将表单对象转换为绑定(通过get()
)~这个有点exlpained在 scala 页面上,但不在 java 页面上!