如何在Play中处理@select!骨架

tom*_*rlh 3 java forms combobox playframework

我正在尝试使用Play的帮助器@select来填充组合!在一个形式,但搜索了很多,我没有找到我真正需要的东西.

我想要这样的东西:

@select(
    filmeForm("Director"),
    options(Seq(aListOfDirectors))
)
Run Code Online (Sandbox Code Playgroud)

这是一种电影注册形式,可以获得导演的外键.我需要列出董事姓名,当我发送表格时,我需要获得所选董事的ID.

如果这种方式不可行,一些类似的方法将是有用的.

谁能帮我?

提前致谢.

mar*_*ira 7

HTML select标记可以包含一组option标记,如下所示:

<select id="directors-select" name="director">
    <option value="steven-spilberg">Steven Spilberg</option>
    <option value="stanley-kubric">Stanley Kubric</option>
</select>
Run Code Online (Sandbox Code Playgroud)

因此,要正确填入selectoptionS,播放@select助手要求Seq包含一个元组(String, String),这将同时包含value属性,也是'标签’呈现给用户.换句话说,options参数需要是a Seq[(String, String)].以下是文档中给出的示例:

@select(
  field = myForm("mySelect"),
  options = Seq(
    "Foo" -> "foo text",
    "Bar" -> "bar text",
    "Baz" -> "baz text"
   ),
  '_default -> "Choose One",
  '_disabled -> Seq("FooKey", "BazKey")
  'cust_att_name -> "cust_att_value"
)
Run Code Online (Sandbox Code Playgroud)

所以,你aListOfDirectors需要包含一个(String, String)元组.但实际上解决这个问题非常简单,只需将代码更改为:

@select(
    field = filmeForm("Director"),
    options = aListOfDirectors.map(director => director.id.toString -> director.name)
)
Run Code Online (Sandbox Code Playgroud)

在这里,我正在考虑这aListOfDirectors是一个Seq[Director].

它在哪里记录?

(Java)表单的播放文档声明"包中有几个输入助手views.html.helper".之后,我只是抬头看着戏剧scaladocs,然后导航到views.html.helper包.在那里你可以找到文档@select.

我知道当人们说"阅读文档"时有时听起来很苛刻,但考虑到框架/软件/ lib开发人员(他们真正了解框架/软件/ lib)花了他们的时间来解释如何使用framework/software/lib,我们肯定可以花些时间阅读文档.