我正在使用 Spring 4 MVC、JQDataTable 和 Jaskon 库将 JSON 对象从 JSP 发送到 spring 控制器。
在表中,当我单击保存按钮时,我会触发 ajax 调用。这是两个情景。
- 我的行可能很旧:在这种情况下,我有部门 ID,并且 hibrnate saveoruupate 命令将更新行。
- 我的行可能是新行:在这种情况下,我将没有部门 ID,并且 hibernate saveorupdate 命令将保存新行。注意:两个操作一个控制器。
当我单击更新按钮时,如果行是旧的 json 对象,则"{\"departmentId\":2,\"departmentName\":\"hmkcode\",\"createdBy\":1,\"modifiedBy\":1,\"status\":true}",
JSON 对象反序列化成功,如果行是新的 json 对象,则更新命令成功触发,
{\"departmentId\":,\"departmentName\":\"hmkcode\",\"createdBy\":1,\"modifiedBy\":1,\"status\":true}",
在这种情况下,我的部门 ID 为空,因此 JSON 对象不会被解析并给出错误。
我知道如果它是新行,我必须在 javascript 中处理它以排除部门 ID 标记。应用程序中会有很多大师,所以每次我都必须用 javascript 处理。Javascript增加代码。有没有办法在相应的Java模型中处理。我已将值初始化为零,但仍然给出解析错误。另外:我必须在 Java 模型中添加新的命令属性。如果行是新的或部门 ID 为 0,则命令属性自动设置为“ADD”,如果行是旧的,部门 ID 不为零,则将命令属性设置为“UPADATE”。
updateRow: function (rowID, rowData, commit) {
var jsonToBeSend="{\"departmentId\":"+rowData.departmentId+",\"departmentName\":\""+rowData.departmentName+"\",\"createdBy\":1,\"modifiedBy\":1,\"status\":"+rowData.status+"}";
alert(dept)
$.ajax({
url: "/BusinessReimbursment/addDepartment",
type: 'POST',
dataType: 'json',
data: jsonToBeSend,
contentType: 'application/json',
mimeType: 'application/json',
success: function(data) {
alert(data.success + " " + data.message);
commit(true);
},
error:function(data) {
// alert("error: "+data);
// $("#dataTable").jqxDataTable('deleteRow', rowID);
}
});
public class DepartmentDTO implements Serializable{
private static final long serialVersionUID = 1L;
Integer departmentId=0;
@NotNull
@Size(min=3,max=30,message="Department lenght should be between 3 to 30 character")
String departmentName;
Integer createdBy;
Integer modifiedBy;
@NotNull
Boolean status;
}
@控制器
@RequestMapping(value="/addDepartment", method=RequestMethod.POST)
public @ResponseBody AjaxResponse addDepartment(@RequestBody final DepartmentDTO departmentDTO){
AjaxResponse response=new AjaxResponse();
Department department=DepartmentConvertor.setDepartmentDTOToDepartment(departmentDTO);
if(Validation.validateForNullObject(department)){
departmentService.addDepartment(department);
}
response.setSuccess(Boolean.TRUE);
response.setMessage("Record save Successfully");
return response;
}
还有一个愚蠢的问题。在模型中我应该使用原始变量还是包装类变量?休眠模型中的相同问题。
如果您知道 JQ Widget 那么:我可以将数据行转换为 JSON。