21

私は使用しようとしています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ヘルパーの使い方を教えてもらえますか?

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

4

1 に答える 1

40

正しいタイプは次のとおり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.4options(List("Foo", "Bar"))ではコンパイルされないため、これを試すことができますoptions(Seq("Foo", "Bar")))

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

于 2012-04-13T07:58:46.520 に答える