我必须处理的表格是这样的:
<label for="features_1">
<input type="checkbox" id="features_1" name="features[]" value="4"> foo
</label>
<label for="features_2">
<input type="checkbox" id="features_2" name="features[]" value="8"> bar
</label>
我可以像这样获得数组
request.body.asFormUrlEncoded.get("features[]")
在我选择这两个项目时List(4, 8)
但是当我尝试以表格
绑定它时case class MyFeatures(features: Seq[Long])
val myForm = Form (
mapping(
"features" -> seq(longNumber)
)(MyFeatures.apply)(MyFeatures.unapply)
)
我总是得到一个空序列,与“features []”
修改
以上示例实际上有效,问题出在其他地方。绑定播放时将要素转换为要素[0] = 4和要素[1] = 8,然后在seq(...)或列表(...)映射中正确处理
答案 0 :(得分:6)
尝试:
<label for="features_1">
<input type="checkbox" id="features_1" name="features[0]" value="4"> foo
</label>
<label for="features_2">
<input type="checkbox" id="features_2" name="features[1]" value="8"> bar
</label>
修改强>
或者:
myForm.bind(myForm.bindFromRequest.data + ("features"-> request.body.asFormUrlEncoded.get("features[]"))).fold(
...
)
这将直接绑定请求中的所有其他字段,然后当涉及到功能时,将手动添加它们。 如果您不需要绑定更多数据,那么只需写下:
myForm.bind("features"-> request.body.asFormUrlEncoded.get("features[]")).fold(
...
)