我有带来很大麻烦多选得与我的播放2.0应用程序。
我已经试过,我在谷歌找到不同的解决方案,但没有适用于2.0.1。
你有越来越多选择任何工作的指南或建议吗?
在HTML ...
<select multiselect="multiselect" ... name="groupIds[]"> ... </select>
表格
class UserAdminForm{
public Long[] groupIds;
}
后来在请求处理器...
Form<UserAdminForm> form = uform.bindFromRequest(); // Bam , [NumberFormatException: For input string: ""]
是否有处理POST阵列什么好办法?
我有同样的问题,我的东西多选形式帮手是在播放2.任何方式的错误,我会通过重命名为选择@name []固定它。 所以,你创建的前一个模板。 含有selectMultiple.scala.html此代码:
@(field: play.api.data.Field, options: Seq[(String,String)], args: (Symbol,Any)*)(implicit handler: helper.FieldConstructor, lang: play.api.i18n.Lang)
@values = @{ field.indexes.map { v => field("[" + v + "]").value } }
@helper.input(field, args:_*) { (id, name, value, htmlArgs) =>
<select id="@id" name="@(name)[]" @toHtmlArgs(htmlArgs) multiple="multiple">
@args.toMap.get('_default).map { defaultValue =>
<option class="blank" value="">@defaultValue</option>
}
@options.map { v =>
<option value="@v._1" @{if(values.contains(Some(v._1))) "selected" else ""} >@v._2</option>
}
</select>
}
在模型中有一个列表映射组件,您在HTML页面中像使用此模板:
@selectMultiple(
myForm("groupsId"),
myOptions,
'_label -> "My MultiSelect"
)
希望这可以帮助您! (请注意,我用玩斯卡拉)
您可以创建类似下面的模板:
@(field: play.api.data.Field, options: Seq[(String,String)], args: (Symbol,Any)*) (implicit handler: FieldConstructor, lang: play.api.i18n.Lang)
@values = @{ field.indexes.map { v => field("[" + v + "]").value } }
@input(field, args:_*) { (id, name, value, htmlArgs) =>
<select id="@id" name="@name" @toHtmlArgs(htmlArgs) multiple="multiple">
@options.map { v =>
<option value="@v._1" @{if(values.contains(Some(v._1))) "selected" else ""}>@v._2</option>
}
</select>
}
你可以找到在这个例子中戏的框架讨论组
你的错误是:
NumberFormatException: For input string: ""
这意味着你收到一个空字符串,不能变成一个数字。 更标志着形式可选字段,如果有可能就拿不到该字段的值。
请看下面的播放2.2我的榜样
对于多选下拉菜单中的选项是在数据的HashMap
@(data:HashMap[String, HashMap[String,String]])
@import helper._
@select(field = myform("options"), options = data.get("options").toSeq,
'_label -> "My Options*", '_showConstraints -> false, 'class ->"required",
'id->"options", 'multiple->"multiple")