web-dev-qa-db-ja.com

Play Framework2.0テンプレートでのオプションヘルパーの使用

views.html.helper.select(ドキュメント ここ )を使おうとしています。私はscalaを知らないので、Javaを使用しています。タイプSeq [(String)(String)]のオブジェクトをテンプレートに渡す必要がありますか?何かのようなもの:

@(fooForm:Form[Foo])(optionValues:Seq[(String)(String)])

@import helper._

@form(routes.foo){
  @select(field=myForm("selectField"),options=optionValues)
}

JavaでSeq [(String)(String)]を作成する方法がわかりません。このコレクションに列挙型クラスのペア(id、title)を入力する必要があります。

誰かがselectヘルパーの使用方法の例を教えてもらえますか?

ユーザーグループで this スレッドを見つけましたが、Kevinの回答はあまり役に立ちませんでした。

21
UltraMaster

正しいタイプはSeq[(String, String)]です。これは、文字列のペアのシーケンスを意味します。 Scalaでは、矢印を使用してペアを定義する方法があります:a->b == (a, b)。したがって、次のように書くことができます。

_@select(field = myForm("selectField"), options = Seq("foo"->"Foo", "bar"->"Bar"))
_

ただし、ドキュメントに示されているように、選択オプションのシーケンスを構築するための別のヘルパーoptionsがあるため、上記のコードを次のように書き直すことができます。

_@select(myForm("selectField"), options("foo"->"Foo", "bar"->"Bar"))
_

オプションの値がラベルと同じである場合は、コードを次のように短縮することもできます。

_@select(myForm("selectField"), options(List("Foo", "Bar")))
_

(注:Play 2.0.4では、options(List("Foo", "Bar"))はコンパイルされないため、これを試すことができますoptions(Seq("Foo", "Bar"))

Javaコードからオプションを入力するには、オーバーロードされた options 関数のいずれかを使用して_Java.util.List<String>_をパラメーターとして使用するのがより便利な方法です。 (この場合、オプション値はそれらのラベルと同じになります)または_Java.util.Map<String, String>_を取るオーバーロードされた関数。

40