在Scala.html模板

时间:2017-06-30 14:35:53

标签: playframework

我正在学习Play Framework 2.6,我想问你如何正确使用Form并在我的模板中访问这些数据。我对文档不是很聪明。

在Controller中

,我将其发送到模板:

Form<LoginForm> loginForm = formFactory.form(LoginForm.class).bindFromRequest();

if (loginForm.hasErrors()) {
    return ok(userLoginForm.render(loginForm));
}

在html scala模板中,在我将表单POST发送到服务器之后,如果我打印@form,我会得到

@(form: Form[LoginForm])

content of @form=    
Form(of=class controllers.forms.LoginForm, data={Submit=Login, password=12, email=mail}, 
value=Optional[controllers.forms.LoginForm@53122070], 
errors=[ValidationError(email,[Please use email in proper format.],[]), ValidationError(password,[Password must be longer than 3 characters],[]), ValidationError(,[Please fix all errors.],[])])

请问如何从模板中访问这些数据(使用@form ... xyz ....):

  1. 如何显示电子邮件值,在这种情况下,它将显示“mail”
  2. 如何显示密码值,在这种情况下,它将显示“12”
  3. 如何显示一条全局错误消息(如果有更多消息,则显示第一条消息),其“请修复所有错误”。在我们的案例中
  4. 如何显示与电子邮件关联的错误消息
  5. 如何显示与密码相关的错误消息

1 个答案:

答案 0 :(得分:0)

我能够弄清楚我的一些问题。

获取电子邮件值:

 @form.data.get("email")

获取密码值:

@form.data.get("password")

获取一条全局错误消息:

@if(!form("").errors.isEmpty()) {
    @form("").errors.get(0).message()
}

(但我更喜欢将全局错误放入flash())

列出所有“电子邮件”错误消息:

@for(error <- form("email").errors) {
    @error.message  
}

我知道可能会有更优雅的解决方案,但这就是我现在所拥有的。