Выбор нескольких элементов - Play 2.0?
У меня большие проблемы с тем, чтобы Multiselect работал с моим приложением Play 2.0.
Я пробовал разные решения, которые я нашел в Google, но ни одно не работает для 2.0.1.
Есть ли у вас какие-либо руководства или советы для того, чтобы заставить multi select работать?
HTML...
<select multiselect="multiselect" ... name="groupIds[]"> ... </select>
Форма
class UserAdminForm{
public Long[] groupIds;
}
и позже в обработчике запросов...
Form<UserAdminForm> form = uform.bindFromRequest(); // Bam , [NumberFormatException: For input string: ""]
Есть ли хороший способ борьбы с массивом POST?
4 ответа
У меня была та же проблема, я считаю, что помощник по множественному выбору форм - это ошибка в Play 2. В любом случае, я бы исправил ее, переименовав select в @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"
)
Надеюсь, это поможет вам! (обратите внимание, что я использую Play для Scala)
Вы можете создать шаблон, как показано ниже:
@(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
Вы ошибка:
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")