2012-05-08 38 views
4

我有很大的麻煩讓Multiselect與我的Play 2.0應用程序一起工作。多選select - Play 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陣列什麼好辦法?

+1

什麼是「<選擇多選= '多選' ...>「??你是不是指「<選擇多個...>」? – virtualeyes

回答

0

你的錯誤是:

NumberFormatException: For input string: "" 

這意味着,您收到一個空字符串,它不能變成一個數字。如果可能無法在該字段中獲取值,請更好地將表單中的字段標記爲可選字段。

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 discussion group

3

這個例子,我有同樣的問題,我的東西多選形式幫手是在播放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"   
) 

希望這可以幫助您! (請注意,我用玩斯卡拉)

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")