【发布时间】:2015-01-16 01:23:20
【问题描述】:
我创建了一个表单来绑定数据表请求:
val datatableForm = Form(
tuple(
"draw" -> number,
"start" -> number,
"length" -> number,
"search" -> tuple(
"value" -> text,
"regex" -> boolean
),
"columns" -> seq(tuple(
"data" -> number,
"name" -> text,
"orderable" -> boolean,
"search" -> tuple(
"value" -> text,
"regex" -> boolean
)
)
),
"order" -> seq(tuple(
"column" -> number,
"dir" -> text
)
)
)
)
在我的请求中,我致电val form = datatableForm.bindFromRequest。这对于 draw、start 和 length 变量非常有效,但对于 search、columns 和 order 变量则失败。例如,当我不使用嵌套元组时,我可以调用datatableForm.bindFromRequest.get,它会返回一个Some 对象,但是当我添加嵌套元组并调用get 时,它会返回一个None 对象。
从 datatables javascript 对象发送的数据是:
{
"draw": 1,
"columns": [
{
"data": 0,
"name": "",
"searchable": true,
"orderable": true,
"search": {
"value": "",
"regex": false
}
},
{
"data": 1,
"name": "",
"searchable": true,
"orderable": true,
"search": {
"value": "",
"regex": false
}
}
],
"order": [
{
"column": 0,
"dir": "asc"
}
],
"start": 0,
"length": 10,
"search": {
"value": "",
"regex": false
}
}
这是请求正文中的数据:
Map(draw -> ArrayBuffer(1), columns[0][data] -> ArrayBuffer(0), columns[0][name] -> ArrayBuffer(), columns[0][searchable] -> ArrayBuffer(true), columns[0][orderable] -> ArrayBuffer(true), columns[0][search][value] -> ArrayBuffer(), columns[0][search][regex] -> ArrayBuffer(false), columns[1][data] -> ArrayBuffer(1), columns[1][name] -> ArrayBuffer(), columns[1][searchable] -> ArrayBuffer(true), columns[1][orderable] -> ArrayBuffer(true), columns[1][search][value] -> ArrayBuffer(), columns[1][search][regex] -> ArrayBuffer(false), order[0][column] -> ArrayBuffer(0), order[0][dir] -> ArrayBuffer(asc), start -> ArrayBuffer(0), length -> ArrayBuffer(10), search[value] -> ArrayBuffer(), search[regex] -> ArrayBuffer(false))
如何让表单绑定到嵌套元组?
【问题讨论】:
-
你能用
@form覆盖你的表格吗? -
Play 是什么版本的?我用 2.3 进行了尝试,并使用 REST 客户端发送提供的 JSON 就像一个魅力。一切都正确绑定。
-
@DanielOlszewski 我正在使用 Play 2.3。您能否发布您的请求的内容以及有关它的更多详细信息?
标签: javascript scala playframework-2.0 datatables jquery-datatables