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. 最初の問題は、フィールド 'number' の値が空でない (したがって無効にされている) 場合、FormObject にバインドされないため、この値が失われることです。

  2. 2 つ目の問題は、フィールド 'startDate' が FormObject にバインドされていないことです。

    何か不足していますか?

4

1 に答える 1

1

まず、よくある間違いです。disabled属性を使用すると、フィールドを送信できなくても無効になるため、リクエスト時間を再生することもできません。readonly代わりに使用してください。(vsについての詳細disabledreadonly

    @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 に答える