2013-02-23 143 views
0
@(myForm: Form[FormObject]) 

@import helper._ 
@import helper.twitterBootstrap._ 

@main("Test") { 
    @form(routes.Application.save) { 
    @input(myForm("number"), '_label -> "Number") { (id, name, value, args) => 
     @if(value.isEmpty) { 
     <input type="text" name="@name" id="@id" value="@value"> 
     } else { 
     <input type="text" name="@name" id="@id" value="@value" disabled> 
     } 
    } 
    @input(myForm("startDate"), '_label -> "Start Date") { (id, name, value, args) => 
     <div class="input-append date datepicker" data-date="@value" data-date-format="dd-mm-yyyy"> 
     <input class="span2" size="16" type="text" value="@value"><span class="add-on"><i class="icon-calendar"></i></span> 
     </div> 
    } 
    <button type="submit" class="btn" title="Save"><i class="icon-ok"></i></button> 
    } 
} 

public class FormObject { 
public String number; 
public String startDate; 
} 
  1. 第一個問題是,當現場「數」的值不 空(因此顯示禁用)不綁定回FormObject, 所以我失去了這個值。
  2. 第二個問題是該字段'startDate'沒有綁定到FormObject。播放框架2.0模板問題

    我錯過了什麼嗎?

回答

1

第一:這是常見的錯誤 - disabled屬性甚至從發送禁止外地,所以它甚至沒有獲得玩請求時間。改爲使用readonly。 (more about disabled vs readonly

@input(myForm("number"), '_label -> "Number") { (id, name, value, args) => 
     <input type="text" name="@name" id="@id" value="@value" @if(!value.isEmpty){ readonly="readonly" }> 
    } 

也許你會需要使用一些CSS/JS的重音該字段是隻讀的,否則用戶往往認爲它作爲一個bug(我不能編輯它,不知道爲什麼

第二:如果是真的String字段 - 我不知道原因。如果是Date問題是由格式變化引起的,Play不能自動解析。在保存/更新之前,您需要使用控制器中給定的格式解析它。

+0

謝謝,不知道是殘疾造成的。日期字段只是一個字符串,所以格式不應該是問題。 – 2013-02-24 17:44:39

+0

在這種情況下,請嘗試將其與請求綁定,並使用Logger.debug(field)'將其顯示在終端中。我不知道,爲什麼簡單的'String'字段沒有綁定:/ – biesior 2013-02-24 20:20:01

+0

我使用調試器來檢查請求,但請求中不包含'startDate'字段。 HTML看起來像這樣:

2013-03-03 21:03:22