是否有一种简单的方法可以在表单顶部对表单错误进行分组,而不是在每个字段上方?
这是我的Scala模板:
@(registrationForm: Form[User])
@implicitField = @{ FieldConstructor(views.html.helper.twitterBootstrap2.twitterBootstrap2FieldConstructor.f) }
@import helper._
@helper.form(action = routes.Registration.index) {
<fieldset>
@if(registrationForm.hasGlobalErrors) {
<div class="alert alert-error">
<a class="close" data-dismiss="alert">×</a>
@registrationForm.globalError.message
</div>
}
<legend>Register</legend>
@inputText(
registrationForm("firstName"),
'_label -> "First Name",
'_showConstraints -> false,
'_showErrors -> true,
'_error -> registrationForm.error("firstName")
)
@inputText(
registrationForm("lastName"),
'_label -> "Last Name",
'_showConstraints -> false,
'_showErrors -> true,
'_error -> registrationForm.error("lastName")
)
@inputText(
registrationForm("emailAddress"),
'_label -> "Email Address",
'_showConstraints -> false,
'_showErrors -> true,
'_error -> registrationForm.error("emailAddress")
)
@inputPassword(
registrationForm("password"),
'_label -> "Password",
'_showConstraints -> false,
'_showErrors -> true,
'_error -> registrationForm.error("password")
)
@inputPassword(
registrationForm("password"),
'_label -> "Confirm Password",
'_showConstraints -> false,
'_showErrors -> true,
'_error -> registrationForm.error("password")
)
</fieldset>
<button type="submit" class="btn">Register</button>
}
Run Code Online (Sandbox Code Playgroud)
我有一个自定义验证,我正在检查唯一的电子邮件地址,并根据该验证,我添加错误的全局错误.我希望在表单顶部将此错误与任何其他错误(由于其他字段的验证而引发)相混淆.有什么建议?
在你的@if(registrationForm.hasGlobalErrors){总是可以尝试调用registrationForm.globalErrors以获取所有错误的列表,遍历它,并为每个错误输出消息?
例:
@if(registrationForm.hasGlobalErrors){
<div class="alert alert-error">
@for(validationError <- registrationForm.globalErrors){
<a class="close" data-dismiss="alert">×</a>
@validationError.message
}
</div>
}
Run Code Online (Sandbox Code Playgroud)
编辑:根据以下评论的请求,我正在更新我的答案,包括一个替代方法,用于分组自定义验证消息,这可能不是"最佳"解决方案,但应该完成.
在你的控制器中:
if(filledForm.hasErrors()){
for(String key : filledForm.errors().keySet()){
List<ValidationError> currentError = filledForm.errors().get(key);
for(ValidationError error : currentError){
flash(key, error.message());
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者您可以使用迭代器,无论您喜欢哪个.
然后在你看来有些东西:
@if(flash.size() > 0){
<div class="alert-alert error">
@for((key, value) <- flash){
<strong>Error : </strong> @value<br />
}
</div>
}
Run Code Online (Sandbox Code Playgroud)
就像我提到的,不是最优雅的解决方案,但它应该在页面顶部找到一个很大的错误列表.
| 归档时间: |
|
| 查看次数: |
3298 次 |
| 最近记录: |