Подтвердить что ты не робот

Использование вспомогательной опции в шаблонах Play Framework 2.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)
}

Я не знаю, как создать Seq [(String) (String)] в java. Мне нужно заполнить эту коллекцию парами (id, title) из моего класса enum.

Может кто-нибудь показать мне какой-то пример того, как использовать вспомогательный помощник?

Я нашел этот поток в группе пользователей, но ответ Кевина мне не очень помог.

4b9b3361

Ответ 1

Правильный тип: Seq[(String, 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>.