PlayFramework java和play~bootstrap助手

PlayFramework java和play~bootstrap助手,playframework,play-bootstrap,Playframework,Play Bootstrap,有人能给我一个简单表单的例子吗?当给一个简单的对象时,你可以点击save,知道它有保存对象所需的所有数据(包括id?) 使用剧本 (这只是一个占位符,所以我可以发布答案-为什么没有人喜欢给出在他们的框架中工作的示例?叹气)这不是我想要的那么明显-我来自一所学校,你可以在表单中“隐藏”id,在某种隐藏字段或类似的地方 也许play bootstrap代码库有一些很好的方法可以做到这一点,但我在文档中没有看到它-所以,我的朋友,这里是如何获取一些对象,为其创建一个表单,然后能够更新该对象 为了简洁起

有人能给我一个简单表单的例子吗?当给一个简单的对象时,你可以点击save,知道它有保存对象所需的所有数据(包括id?)

使用剧本


(这只是一个占位符,所以我可以发布答案-为什么没有人喜欢给出在他们的框架中工作的示例?叹气)

这不是我想要的那么明显-我来自一所学校,你可以在表单中“隐藏”id,在某种隐藏字段或类似的地方

也许play bootstrap代码库有一些很好的方法可以做到这一点,但我在文档中没有看到它-所以,我的朋友,这里是如何获取一些对象,为其创建一个表单,然后能够更新该对象

为了简洁起见,我省略了db代码

首先,这里是我的操作——在我的控制器类中——它从数据库中获取我的模型。请注意,我使用的支持模型与数据库返回相同,带有私有字段等(因此,您知道,只是一个通用的POJO)

好的,我们这里有一个表单-它告诉表单去哪里(我们将在5秒钟内查看路线),并显示可编辑字段。我将id字段设置为隐藏在这里。如何访问它对我来说并不直观,但你在这里

我的路由文件包含以下内容:

GET     /edit-lesson/:languageId    controllers.HomeController.editLesson(languageId: Integer)
POST    /save-lesson/               controllers.HomeController.saveLesson()
第一行是如何开始编辑页面。第二行是我想要保存这些编辑过的课程的地方。我使用
routes.HomeController.saveLesson
反向指向save lesson。如果您的控制器名为Bob(哑名),则应改为使用
routes.Bob.saveLesson
链接到
saveLesson
方法

最后,我的saveLesson代码如下所示(在Bob~erm,HomeController中)

public Result saveLesson(){
Form languageForm=formFactory.Form(Language.class).bindFromRequest();
if(languageForm.hasErrors()){
返回badRequest(editLesson.render(languageForm));
}否则{
Language=languageForm.get();
试一试{
da.保存语言(语言);
返回ok(share.render());
}捕获(SQLE异常){
//TODO:记下这个,但我们真的没有太多事情要做,是吗?
返回ok(如getMessage());
}
}
}
注意数据绑定在运行中出错-如果表单有错误,调用
.get()
将失败,因此,如果控制器中出于某种原因需要一些表单数据,则需要检查表单是否有错误-如果没有错误,请执行任何操作。如果需要,您需要在表单对象上使用
.field(String).value()
,您无法将表单对象转换为绑定(通过
get()
)~这在scala页面上有所说明,但在java页面上没有

@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 }
}
GET     /edit-lesson/:languageId    controllers.HomeController.editLesson(languageId: Integer)
POST    /save-lesson/               controllers.HomeController.saveLesson()
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());
        }
    }
}