4

我在让 Multiselect 与我的 Play 2.0 应用程序一起工作时遇到了很大的麻烦。

我尝试了在 google 上找到的不同解决方案,但没有一个适用于 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 数组的好方法?

4

4 回答 4

3

我遇到了同样的问题,我认为多选表单助手是 Play 2 中的一个错误。无论如何,我通过将选择重命名为 @name[] 来修复它。因此,您为 ex 创建了一个模板。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"          
  )

希望这对你有帮助!(请注意,我正在使用 Play for Scala)

于 2013-08-14T22:41:53.993 回答
1

您可以创建如下模板:

@(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>
}

您可以在play-framework 讨论组中找到此示例

于 2012-12-28T00:04:41.430 回答
0

You error is:

NumberFormatException: For input string: ""

This means that you are receiving an empty String, which can't be turned into a number. Better mark the field in the Form as optional if it's possible to not get a value in that field.

于 2012-05-09T15:31:47.180 回答
0

请看我下面播放 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")
于 2014-07-09T21:38:58.987 回答