Play Framework 表单错误处理
Play Framework Form Error Handling
这是我的视图文件,其中包含必须由用户填写的表单:
@helper.form(call) {
@helper.input(resumeForm("surname"), '_label -> "Surname") { (id, name, value, args) =>
<input name="@name" type="text" value="@value" placeholder="Enter your surname">
}
}
这是我的自定义字段构造函数:
@(elements: helper.FieldElements)
@if(!elements.args.isDefinedAt('showLabel) || elements.args('showLabel) == true) {
<div class="input-with-label text-left">
<span>@elements.label</span>
@elements.input
</div>
} else {
@elements.input
}
现在我进退两难了。当输入的值不清除验证时,我需要将 class field-error
添加到输入中,我需要添加 data-toggle
、data-placement
和 title
.但是,我不知道有什么方法可以检查特定字段是否有错误。实现这个的最佳方法是什么?我已经看过使用 inputText
或其他东西,但这与基础 input
基本相同,因此也无法访问任何错误。我也无法在字段构造函数中更改 elements.input
的 HTML。
看看 play documentation:编写自己的字段构造函数。
您可以在自定义字段构造函数的模板中使用 @if(elements.hasErrors)
检查错误。
<div class="input-with-label text-left @if(elements.hasErrors){field-error}">
...
编辑:
您可以通过 args
参数将字段的错误状态传递给您的输入。来自播放文档:
Note: All extra parameters will be added to the generated HTML, except for ones whose name starts with the _ character. Arguments starting with an underscore are reserved for field constructor argument (which we will see later).
不过您需要转换为匹配的类型。
@input(resumeForm("surname"), '_label -> "Surname", 'hasErrors -> resumeForm("surname").hasErrors) { (id, name, value, args) =>
<input name="@name" type="text" value="@value" placeholder="Enter your surname"
class="@if(args.get('hasErrors).map(_ match { case x:Boolean => x}).get){field-error}">
}
这是我的视图文件,其中包含必须由用户填写的表单:
@helper.form(call) {
@helper.input(resumeForm("surname"), '_label -> "Surname") { (id, name, value, args) =>
<input name="@name" type="text" value="@value" placeholder="Enter your surname">
}
}
这是我的自定义字段构造函数:
@(elements: helper.FieldElements)
@if(!elements.args.isDefinedAt('showLabel) || elements.args('showLabel) == true) {
<div class="input-with-label text-left">
<span>@elements.label</span>
@elements.input
</div>
} else {
@elements.input
}
现在我进退两难了。当输入的值不清除验证时,我需要将 class field-error
添加到输入中,我需要添加 data-toggle
、data-placement
和 title
.但是,我不知道有什么方法可以检查特定字段是否有错误。实现这个的最佳方法是什么?我已经看过使用 inputText
或其他东西,但这与基础 input
基本相同,因此也无法访问任何错误。我也无法在字段构造函数中更改 elements.input
的 HTML。
看看 play documentation:编写自己的字段构造函数。
您可以在自定义字段构造函数的模板中使用 @if(elements.hasErrors)
检查错误。
<div class="input-with-label text-left @if(elements.hasErrors){field-error}">
...
编辑:
您可以通过 args
参数将字段的错误状态传递给您的输入。来自播放文档:
Note: All extra parameters will be added to the generated HTML, except for ones whose name starts with the _ character. Arguments starting with an underscore are reserved for field constructor argument (which we will see later).
不过您需要转换为匹配的类型。
@input(resumeForm("surname"), '_label -> "Surname", 'hasErrors -> resumeForm("surname").hasErrors) { (id, name, value, args) =>
<input name="@name" type="text" value="@value" placeholder="Enter your surname"
class="@if(args.get('hasErrors).map(_ match { case x:Boolean => x}).get){field-error}">
}