Java 在Play框架中使用登录表单处理简单的更改请求

Java 在Play框架中使用登录表单处理简单的更改请求,java,html,scala,playframework,Java,Html,Scala,Playframework,我一直在熟悉Java中的Play框架。我接受了一个相当简单的应用程序更改请求,但我不认为我完全理解如何着手修复它。请求是在登录尝试失败后重新填充电子邮件字段。我意识到这可能是一个非常简单的解决方案,但我无法找到解决这种特殊情况的方法。这是我发现的 路由文件: #Sessions GET /logout @femr.ui.controllers.SessionsController.delete() POST /login/reset @femr.u

我一直在熟悉Java中的Play框架。我接受了一个相当简单的应用程序更改请求,但我不认为我完全理解如何着手修复它。请求是在登录尝试失败后重新填充电子邮件字段。我意识到这可能是一个非常简单的解决方案,但我无法找到解决这种特殊情况的方法。这是我发现的

路由文件:

#Sessions
GET         /logout        @femr.ui.controllers.SessionsController.delete()
POST        /login/reset   @femr.ui.controllers.SessionsController.editPasswordPost()
POST        /login         @femr.ui.controllers.SessionsController.createPost()
GET         /login         @femr.ui.controllers.SessionsController.createGet()
SessionController.java中的代码Snippit(注释行是我尝试的修复):

public Result createPost(){
最终表单createViewModelForm=formFactory.Form(CreateViewModel.class);
CreateViewModel viewModel=createViewModelForm.bindFromRequest().get();
ServiceResponse response=SessionService.createSession(viewModel.getEmail()、viewModel.getPassword()、request().remoteAddress());
if(response.hasErrors()){
//CreateViewModel emailModel=新建CreateViewModel();
//emailModel.setEmail(viewModel.getEmail());
//createViewModelForm.fill(emailModel);
返回ok(create.render(createViewModelForm));
}
在这里,我试图在呈现表单之前填充email字段,但这并没有完全起作用。我在网上看到了一些关于显式呈现的内容,但这对我来说也不太管用

我找到的表单是create.scala.html,我相信解决方案可能涉及使用javascript或其他内容,但如果可能的话,我希望只在Java中的SessionController中处理它。
欢迎您提出建议!

当您将from与请求中的数据绑定时,如果您再次将其传递到视图,它将“保留”表单上的数据。如果你想发送消息或类似的东西,你可以在响应上发送一个flash,并在你的视图上阅读。你必须记住,播放是无状态的,所以每个请求都是新的,你必须再次呈现数据。
public Result createPost() {

    final Form<CreateViewModel> createViewModelForm = formFactory.form(CreateViewModel.class);
    CreateViewModel viewModel = createViewModelForm.bindFromRequest().get();
    ServiceResponse<CurrentUser> response = sessionsService.createSession(viewModel.getEmail(), viewModel.getPassword(), request().remoteAddress());

    if (response.hasErrors()) {
        //CreateViewModel emailModel = new CreateViewModel();
        //emailModel.setEmail(viewModel.getEmail());
        //createViewModelForm.fill(emailModel);
        return ok(create.render(createViewModelForm));
    }