2013-06-19 72 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 –