2013-06-19 157 views
1

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

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

回答

3

在官方文件上有怎样的“书面方式你自己的领域构造器”部分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我们不想使用。

希望有帮助。

+0

我在我的视图中编写这段代码?无论如何改变帮手bootstrap? –

+0

提供的代码是一个示例,您可以使用elements.field获取相应的字段和elements.errors以获取错误(如果存在任何提交表单的地方)并根据需要处理它们而不使用inputText。 – Franco

+0

好的,好的...只是还有一件事......如果我在模板上添加@(elements:helper.FieldElements),我得到一个编译错误:not found:value elements –