2013-08-26 48 views
2

我有一個包含一些值的表單。當發送到服務器時,服務器驗證信息,並且如果任何字段無效,應該返回填充的表單。使用Play框架自動填充表單

我現在設置的方式就是這樣。

我有一個表單驗證2個字段。

val userForm = Form(
    mapping(
    "name" -> text, 
    "age" -> number(min=0, max=100) 
)(User.apply)(User.unapply) 
) 

如果表單無法綁定,我加載與剛發佈的值相同的表單。

def createItem() = IsAuthenticated { 
    username => 
     implicit request => { 
     createExperienceForm.bindFromRequest().fold(
      formWithErrors => BadRequest(
      views.html.createItem(formWithErrors) 
     ), 
      validForm => { 
      val itemCode = Item.createItem(validForm) 
      Redirect(routes.Item.item(itemCode).url) 
      } 
     ) 
     } 
    } 

問題是我必須手動設置我的HTML頁面中每個窗體的值。例如。 @(itemForm:表格[ItemContent])

<input name="age" type="number" class="input-block-level" value="@itemForm.data.get("age")"> 

雖然此方法有效,它將成爲一個位錯誤俯臥於較大的形式。對於每個字段,我需要直接設置值。是否可以自動填充這些字段?

+3

我真的不知道你所說的「自動填充」的意思。你可以使用標準遊戲助手,例如:@inputText(createExperienceForm(「name」),'_label - >「Name」),它會自動設置你的字段的值 – Kris

+2

如果默認助手的佈局不符合你的需求,你總是可以覆蓋它! http://www.playframework.com/documentation/2.1.x/ScalaFormHelpers –

+1

用[javascript]嘗試[metawidget](http://metawidget.org/) –

回答