我正在使用 play-2.0.3。
我有一个地图,想用 Int->String 填充下拉列表(使用类似 @select 的东西)。
我知道 @select 只接受 Seq[(String, String).
我怎样才能重载这个助手来接受 Seq[(Int, String)] ?
我试图做以下事情:
- 将 select.scala.html 的源代码复制到 views/mySelect.scala.html
- 出于我的目的对其进行了编辑。
@**
* Generate an HTML select.
*
* Example:
* {{{
* @select(field = myForm("isDone"), options = options("Yes","No"))
* }}}
*
* @param field The form field.
* @param args Set of extra attributes.
* @param handler The field constructor.
*@
@import helper._
@(field: Field, options: Seq[(Int,String)], args: (Symbol,Any)*)(implicit handler: FieldConstructor, lang: play.api.i18n.Lang)
@input(field, args:_*) { (id, name, value, htmlArgs) =>
<select id="@id" name="@name" @toHtmlArgs(htmlArgs)>
@args.toMap.get('_default).map { defaultValue =>
<option class="blank" value="">@defaultValue</option>
}
@options.map { v =>
<option value="@v._1" @(if(value == Some(v._1)) "selected" else "")>@v._2</option>
}
</select>
}
但这似乎不起作用。
玩 说
')' expected but identifier found.
在行中
@(field: Field, options: Seq[(Int,String)], args: (Symbol,Any)*)(implicit handler: FieldConstructor, lang: play.api.i18n.Lang)
顺便说一下(Symbol,Any)之后的 * 是什么?
玩不喜欢。即使我删除了这个*,play 也会说:
not found: value field
引用同一行。
请帮帮我。