我很新玩和斯卡拉。我正在处理表单和验证。但我无法弄清楚从表单上的多次验证中得到所有错误。
我的表单元组看起来像;
val companyMapping = Forms.tuple(
"name" -> nonEmptyText,
"email" -> email,
"password" -> nonEmptyText(8),
"re-password" ->nonEmptyText(8)).verifying(
// Add an additional constraint: both passwords must match
"Passwords don't match", data => {
data._3 == data._4 }
).verifying(
// Second constraint
"Test error", data => {
false }
)
在我打印全局错误和错误的视图中,它看起来像;
@println(companyForm.globalError)
@println(companyForm.errors)
和输出;
Some(FormError(,Passwords don't match,WrappedArray()))
List(FormError(,Passwords don't match,WrappedArray()), FormError(,Test error,WrappedArray()))
在这个阶段,我完全不知道如何打印这两个错误。我为每个输入分别显示错误并在最后显示全局错误。但是如果密码匹配,我可以在全局错误中看到测试约束。除了它只显示密码匹配约束。
这是视图部分;
@helper.form(action = routes.Login.register) {
<div class="row">
<span class="label">Name</span>
<input type="text" name="name" placeholder="Company Name" value="@companyForm("name").value" >
@if(!companyForm.errors("name").isEmpty){
<span class="error">@Messages(companyForm.errors("name")(0).message,"Company name")</span>
}
</div>
<div class="row">
<span class="label">Email</span>
<input type="text" name="email" placeholder="Email" value="@companyForm("email").value" >
@if(!companyForm.errors("email").isEmpty){
<span class="error">@Messages(companyForm.errors("email")(0).message,companyForm.errors("email")(0).key)</span>
}
</div>
<div class="row">
<span class="label">Password</span>
<input type="password" name="password" placeholder="Password" value="@companyForm("password").value" >
@if(!companyForm.errors("password").isEmpty){
<span class="error">@Messages(companyForm.errors("password")(0).message,8)</span>
}
</div>
<div class="row">
<span class="label">Re-type Password</span>
<input type="password" name="re-password" placeholder="Re-type your password" value="@companyForm("re-password").value" >
@if(!companyForm.errors("re-password").isEmpty){
<span class="error">@Messages(companyForm.errors("re-password")(0).message,8)</span>
}
</div>
@println(companyForm.globalError)
@println(companyForm.errors)
<div class="row">
<span class="label"><button type="submit">Save</button></span>
@companyForm.globalError.map { error =>
<span class="error">@error.message</span>
}
</div>
}
也许我只是对这些错误类型感到困惑。所以请你详细解释一下。