如何在Play Framework 2中没有表单助手的情况下获取完整表单验证错误消息?

时间:2014-02-04 07:46:58

标签: forms scala playframework translation playframework-2.2

由于HTML表单可以有许多不同的形状,我想了解如何创建单独设计的表单而不为每个案例创建输入助手。我能找到的所有例子都与表单助手有关。

在我的控制器里,我有这样的事情:

formWithErrors => BadRequest(views.html.formsamples.getform1(formWithErrors))

我的观点:

<div class="form-group@{if(form.error("age")) " has-error"}">
    <label for="exampleInputAge1" class="control-label">Age</label>
    <input type="text" class="form-control" name="age" id="exampleInputAge1" placeholder="Enter age">
    @if(form.error("age")) {
        <span class="help-block">(1) @form.error("age")</span>
        <span class="help-block">(2) @form.error("age").get.message</span>
        <span class="help-block">(3) @Messages(form.error("age").get.message, form.error("age").get.args)</span>
    }
</div>
@helper.inputText(form("age"))

错误输出如下所示:

(1) FormError(age,error.max,WrappedArray(100))
(2) error.max
(3) Must be less or equal to WrappedArray(100)

Number(3)尽可能接近,但它仍然不是正确的错误消息,因为我理解@Messages需要单独的翻译参数,而form.error("age").get.args提供参数作为WrappedArray

当我使用Play Framework的默认输入助手时,(第一个)错误消息为:Must be less or equal to 100

如何获取此消息,包括翻译完整错误消息所需的所有参数?

full view file可以在GitHub上找到。)

1 个答案:

答案 0 :(得分:2)

要使用数组(或类似的集合),您可以使用以下内容:

def method(args:String *):Unit

method("one", "two")

method(Seq("one", "two"): _*)

这是播放框架源代码中的一行:Helpers.scala#27