【问题标题】:PlayFramework 2.1: Validation Form (error messages)PlayFramework 2.1:验证表单(错误消息)
【发布时间】:2013-06-19 00:15:04
【问题描述】:

我正在 PlayFramework 2.1 中开发一个应用程序。但是,我没有使用表单助手,例如:@inputText,我正在编写自己的 HTML。

如何在不使用表单助手的情况下显示错误消息?因为,如果我使用表单助手,则会显示错误消息。

【问题讨论】:

    标签: java forms validation playframework playframework-2.1


    【解决方案1】:

    在官方文档中有关于如何在没有默认帮助器的情况下编写自己的输入(例如)的简要说明,请查看“编写自己的字段构造器”部分here

    我正在添加一个示例,说明如何在这篇文章中编写您自己的模板以澄清一点,以回应您的第二条评论。这个例子对官方文档中的解释做了一些补充。 This post 与这个问题有关,也很有帮助。

    首先,您必须创建一个模板,为此,请转到 /app/views/afolderyoulike 并创建 myField.scala.html(例如)。添加此示例代码,您可以根据需要对其进行调整:

    @(elements: helper.FieldElements)
    
    <div class="@if(elements.hasErrors) {error}">
        <label for="@elements.id">@elements.label</label>
        <div class="input">
            @elements.input
            <span class="errors">@elements.errors.mkString(", ")</span>
        </div>
    </div>
    

    然后,您拥有表单的视图将类似于以下代码:

    @(title: String, formSignup: Form[models.commerce.CommerceSignupRequest])
    
    @import play.data.Form
    @import helper._
    
    @implicitField = @{ FieldConstructor(myField.f) }
    
    @main(title) {
        <div class="container">
            @form(action = routes.CommerceController.signup()) {
                <fieldset>
                    <legend>@title</legend>
                    @inputText(formSignup("commerceName"))
                    @inputText(formSignup("blabla1"))
                    @inputText(formSignup("blabla2"))
                </fieldset>
                <button type="submit" id="submit-btn" name="submit" class="btn">Send</button>
            }
        </div>
    }
    

    这里重要的代码片段是:

    • @import helper._ 会带来默认的@inputText。
    • @implicitField = @{ FieldConstructor(myField.f) } 导入您的模板
    • @inputText(formSignup("commerceName")) 呈现您的自定义模板,替换我们不想使用的默认 inputText。

    希望对您有所帮助。

    【讨论】:

    • 我写这段代码在我看来?有没有办法改变辅助引导程序?
    • 提供的代码是一个示例,您可以使用 elements.field 获取相应的字段和 elements.errors 获取错误(如果您提交表单时有错误)并按照您的方式处理它们可能需要不使用 inputText。
    • 好的,很好......还有一件事......如果我在模板上添加:@(elements: helper.FieldElements),我得到一个编译错误:未找到:值元素
    • 幸运的是,我添加了一个带有自定义 inputField 的示例。对不起,我的回复晚了,我今天很忙。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-06-04
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2015-10-23
    • 2018-03-27
    相关资源
    最近更新 更多