@helper.select( フォームの指定 , options = Helper.options( 表示項目の指定 ),このように、()内に'multiple -> "multiple"と追記することで、multiple属性が設定され、複数の項目が選択できるようになります。が! 修正はこれだけではありません。フォームの指定で、名前の後に[]をつけなければいけません。例えば、前回作成したselectを複数対応にする場合、
'multiple -> "multiple")
myForm("country") → myForm("country[]")このように修正しておく必要があります。これを忘れると、値が正しく渡されなくなります。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
●index.scala.htmlのselectメソッド部分 @helper.select( myForm("country[]"), options = helper.options(("JP","Japan"),("US","U.S.A"),("UK","UK"),("etc","Other")), '_default -> "-- Choose --", 'multiple -> "multiple", 'size -> "5", '_help -> "" ) ●Application.scalaのソースコード package controllers import play.api._ import play.api.mvc._ import play.api.data._ import play.api.data.Form import play.api.data.Forms._ object Application extends Controller { case class MyFormData( check:Boolean, gender:String, country:List[String]) val form1 = Form( mapping( "check" -> boolean, "gender" -> text, "country" -> list(text) )(MyFormData.apply)(MyFormData.unapply) ) def index = Action { val title = "サンプルページ" val msg = "サンプルのページです。" Ok(views.html.index(title, msg, form1)) } def sendform = Action { implicit request => var myForm = form1.bindFromRequest val data: MyFormData = myForm.get val title = "サンプルページ" val msg = "data: " + data Ok(views.html.index(title, msg, myForm)) } }
<< 前へ |