1

我在表单中有一个多项选择项。根据 Play Framework 的文档,我需要“重复值”以使所有选定的选项都适合我的数据结构的 List[String] 属性。

case class MyFormData (
  fq_cset:  Option[List[String]]
)


val myForm: Form[MyFormData] = Form(
  mapping(
     "fq_cset" -> optional(list(text))
  )
)(MyFormData.apply _)(MyFormData.unapply _) 

我引用 Play 的文档:

当您使用这样的重复数据时,浏览器发送的表单值必须命名为 emails[0]、emails[1]、emails[2] 等。

我无法弄清楚如何命名上述值。我试图创建一个像这样的选择元素

<select name="fq_cset">
  <option name="fq_cset[0]" value="A" selected="selected">Value A</option>
  <option name="fq_cset[1]" value="B"                    >Value B</option>
  <option name="fq_cset[2]" value="C" selected="selected">Value C</option>
  <option name="fq_cset[3]" value="D"                    >Value D</option>
</select>

但在提交表单后,我在 URL 中看到

/path?fq_cset=A&fq_cset=C

代替

/path?fq_cset[0]=A&fq_cset[2]=C

没有括在方括号中的索引会阻止正确绑定 MyFormData 类中名为 fq_cset 的 List[String] 属性中的参数。

我怎样才能让它正常工作?这是获得我需要的东西的正确方法还是我误解了文档?

4

0 回答 0