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。

    我错过了什么吗?

4

1 回答 1

1

第一:这是一个常见的错误 -disabled属性甚至禁止发送该字段,因此它甚至无法播放请求时间。改为使用readonly。(更多关于disabledvsreadonly

    @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 来强调该字段是只读的,否则用户通常会认为它是一个错误(我无法编辑该字段并且不知道为什么

第二:如果它真的是String现场 - 我不知道原因。如果Date是格式改变导致的问题,Play 无法自动解析。在保存/更新之前,您还需要使用控制器中的给定格式对其进行解析。

于 2013-02-23T16:18:00.103 回答