2012-04-12 83 views
21

使用选项帮手,我试图用views.html.helper.select(文档here)。我不知道scala,所以我使用java。我需要传递Seq [(String)(String)]类型的对象到模板右边?喜欢的东西:在播放Framework 2.0的模板

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

@import helper._ 

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

我不知道如何在Java中创建序列[(字符串)(字符串)。我需要使用来自我的枚举类的对(id,title)填充此集合。

有人能告诉我一些expample如何使用选择助手?

我发现用户组this线程,但凯文的回答并没有对我帮助很大。

回答

40

正确的类型是:Seq[(String, String)]。它表示一串String对。在斯卡拉,有一种方法可以使用箭头来定义对: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"))) 

(注:在播放2.0.4 options(List("Foo", "Bar"))无法编译,所以你可以试试这个options(Seq("Foo", "Bar"))

为了填补从Java代码的选择,更方便的方法是为使用重载options功能采取java.util.List<String>作为参数(在这种情况下,选项的值会与它们的标签)或重载函数采取java.util.Map<String, String>

+0

非常感谢您的回复。但是这并不能解决我的问题。我需要创建集合并用Java中的值填充它,然后将该集合传递给scala模板。 – UltraMaster 2012-04-13 17:54:21

+0

啊,我的确误解了你的问题。我更新了我的答案,提出了从Java代码填充选项的方法。 – 2012-04-13 20:11:32

+0

'options(List(“Foo”,“Bar”))'没有对我进行类型检查,所以我使用了@ @ myOptions = @ {List(“Foo”,“Bar”)。 )}' – 2015-11-18 12:54:17