1

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

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

4

1 回答 1

3

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

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

首先,您必须创建一个模板,为此,请转到 /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。

希望有帮助。

于 2013-06-19T00:22:59.300 回答