【问题标题】:Play framework 2.0 template issuesPlay framework 2.0 模板问题
【发布时间】:2013-02-24 00:28:30
【问题描述】:
@(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。

    我错过了什么吗?

【问题讨论】:

    标签: playframework-2.0 scala-template


    【解决方案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 无法自动解析。在保存/更新之前,您还需要使用控制器中的给定格式对其进行解析。

    【讨论】:

    • 谢谢,不知道是禁用导致的。日期字段只是一个字符串,所以格式不应该是问题。
    • 在这种情况下,尝试从请求中绑定它并使用Logger.debug(field) 在终端中显示它。我不知道,为什么简单的String 字段没有绑定:/
    • 我使用调试器检查请求,但请求不包含字段'startDate'。 HTML 如下所示:
    猜你喜欢
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多