【问题标题】:Play Framework 2.5/2.6 and Form in scala.html template在 scala.html 模板中播放 Framework 2.5/2.6 和 Form
【发布时间】:2017-06-30 14:35:53
【问题描述】:

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

在控制器中,我将其发送到模板:

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. 如何显示email值,在这种情况下会显示“mail”
  2. 如何显示密码值,这种情况下会显示“12”
  3. 如何显示一个全局错误消息(或第一个,如果有更多),它的“请修复所有错误”。在我们的例子中
  4. 如何显示与电子邮件相关的错误消息
  5. 如何显示与密码相关的错误消息

【问题讨论】:

  • 您是否阅读过有关表格的文档?它回答并提供了您的每个问题的示例playframework.com/documentation/2.6.x/ScalaForms#toolbar
  • 是的,对于Java部分......但我不想使用它们生成的
    ,我自己编写它们,所以我不知道如何访问这些数据。我会在周末多尝试一下。

标签: playframework


【解决方案1】:

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

获取电子邮件值:

 @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  
}

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

【讨论】:

  • 在 Play framework 2.6 中,可以使用@form.rawData.get("email")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多