播放框架2.0模板问题

时间:2013-02-23 08:08:59

标签: playframework-2.0 scala-template

@(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. 第一个问题是当字段'number'的值不是时 空(因此显示已禁用)未绑定回FormObject, 所以我失去了这个价值。
  2. 第二个问题是字段'startDate'未绑定到FormObject。

    我错过了什么吗?

1 个答案:

答案 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来强调该字段是只读的,否则通常用户会将其视为错误(我无法编辑此字段而不知道为什么

第二:如果它真的是String字段 - 我不知道原因。如果Date问题是由格式更改引起的,则Play无法自动解析。在保存/更新之前,您还需要使用控制器中的给定格式解析它。