我正在尝试将我的jqGrid链接到我的Java Rest服务。当我将编辑/添加数据从jqGrid发送到我的rest,以便为DB CRUD操作处理它时,我收到的是这样的:
"nume=Alin&prenume=Dan&sefDepartament=Yes&position=position+2&joinYear=2015-08-11&oper=edit&id=2"
我需要以JSON格式接收它。我怎样才能做到这一点?
这是我的Java代码:
@Path("/update")
public class UpdateDatabase {
@POST
public String updateDatabase(String data){
System.out.println(data);
}
这是我关于服务器连接的jqGrid设置:
grid.jqGrid({
pager: '#pager',
mtype: "POST",
url: "/RestWithDatabaseConnection/rest/fetchData",
editurl:'/RestWithDatabaseConnection/rest/update',
datatype: "json",
请告诉我是否应该添加一些其他信息。
要发送以JSON格式编码的编辑结果,应该使用
- 在HTTP标头中设置
Content-Type: application/json
- 使用
JSON.stringify
对发布的数据进行编码
如果您使用免费的jqGrid,那么您可以使用以下inlineEditing
选项,这些选项是jqGrid的选项(与editurl
处于同一级别)
inlineEditing: {
ajaxSaveOptions: { contentType: "application/json" },
serializeSaveData: function (postData) {
return JSON.stringify(postData);
}
}
如果使用旧的jqGrid版本,您可以以几乎相同的方式使用jqGrid选项ajaxRowOptions
和serializeRowData
:
ajaxRowOptions: { contentType: "application/json" },
serializeRowData: function (postData) {
return JSON.stringify(postData);
}
Free jqGrid支持jqGridInlineSerializeSaveData
事件作为serializeSaveData
或serializeRowData
回调的替代。它在更高级的场景中很有帮助。由于兼容性原因,免费jqGrid也支持选项ajaxRowOptions
和serializeRowData
。
我建议您考虑使用免费的jqGrid 4.12.0或GitHub的最新源代码。主要新功能和错误修复的列表通常在自述文件中进行描述。