fridge11_24
来源:互联网 发布:大话2召唤兽数据预测 编辑:程序博客网 时间:2024/06/01 23:40
写了好几天,终于把更新写出来了。
这是后台代码,使用post进行改操作。model为表单更新后的数据。
//更改一个部门@PostMapping(value="/edit")public Resp edit(Department model){ //model为输入后的数据 Department department=departmentRepository.findOne(model.getDepartmentId()); if (department == null) { return new Resp(Resp.PARAM_ERROR, "部门错误!"); } if (ParamUtil.isBlack(model.getName())) { return new Resp(Resp.PARAM_ERROR, "请输入部门名称!"); } if (ParamUtil.isBlack(model.getStaffId())) { return new Resp(Resp.PARAM_ERROR, "请输入负责人工号!"); } if (ParamUtil.isBlack(model.getMobile())) { return new Resp(Resp.PARAM_ERROR, "请输入部门联系电话!"); } department.setName(model.getName()); department.setStaffId(model.getStaffId()); department.setMobile(model.getMobile()); departmentRepository.save(department); return new Resp("修改成功");}
之前一直因为js部分是jquery序列化取值,取表单上的值,而表单上没有显示departmentId,因为在多次调试后,得知了有model对象而无departmentId传入的情况。
department.js文件中edit部分(用于提交修改表单):
edit : function() {
//取得id为#depart_form_edit的表单的序列化值 var model = $('#depart_form_edit').serialize();
//model是jQuery的序列化字符串,model+token值 var resp = AjaxUtil.postJson(AjaxUtil.url + 'departManager/edit', model += '&token=' + this.token); // console.log(resp);//恒为null //console.log(model);测试用 if (resp) { SwalUtil.success(resp.msg); $('#depart_table').bootstrapTable('refresh'); $('#depart_form_edit')[0].reset(); $('#depart_modal_edit').modal('hide'); }},
还有一个editUI(对应表格界面的修改按钮):
editUI : function() { var rows = $('#depart_table').bootstrapTable('getSelections'); if (rows.length == 0) { SwalUtil.error("请选择要修改的部门!"); return; } else if (rows.length > 1) { SwalUtil.error("一次只能修改一个部门!"); return; } else { var row = rows[0]; $('#depart_form_edit').autofill(row); $('#depart_modal_edit').modal('show'); var resp = AjaxUtil.getJson(AjaxUtil.url + "departManager/list?token=" + depart.token + "&departmentId=" + row.departmentId); }
而在department.html中的修改页面部分代码:
<div class="modal-body"> <form id="depart_form_edit"> <!--===通过显示ID来获取ID=======--> <div class="form-group" hidden="hidden"> <label >部门ID</label><input type="text" class="form-control" name="departmentId" placeholder="请输入部门ID" readonly/> </div> <!--===========================--> <div class="form-group"> <label>部门名称</label><input type="text" class="form-control" name="name" placeholder="请输入部门名称" /> </div> <div class="form-group"> <label>负责人工号</label><input type="text" class="form-control" name="staffId" placeholder="请输入负责人工号" /> </div> <div class="form-group"> <label>部门联系电话</label><input type="text" class="form-control" name="mobile" placeholder="请输入部门联系电话" /> </div> </form></div>
部门ID 的元素设置为hidden且readonly,因为disable无法被表单序列化获取。
排查了很久的问题,最后只要在修改页面上加一个隐藏的输入框就可以了。
对资源的增,删,改,查操作,其实都可以通过GET/POST完成,不需要用到PUT和DELETE。
js对象序列化:department.js中,edit function:model变量为department.html中的修改弹出页面的数据序列化对象。
对象序列化是指将对象的状态转换为字符串;
js对象序列化格式(自行百度)
序列化与反序列化
将表单中的值序列化并加上token值,即表单序列化;
json字符串是json对象的string形式,也就是string,但是符合json对象的格式
若是json对象,那就可以使用getXxx(..)来得到某key对应的value了。
json对象可以通过javascript存取属性!json对象装成json字符串经常用于前后台传输数据
jquery $()
IllegalArgumentException异常之所以会产生是由于JpaRepository类中的findOne方法不允许参数为空。
bootstraptable responseHandler :加载服务器数据之前的处理程序,可以用来格式化数据。
参数:res为从服务器请求到的数据。
个人理解:在初始化的时候 用来格式化数据 res是从服务器请求到的数据
当预处理请求不成功时 返回空对象 当预处理请求成功时,返回rep的obj对象
jquery autofill下载插件使用
在department.html新建一个部门修改模态框,修改div id。
addUI和editUI设置添加修改按钮的。
在新建模态框的保存按钮上,定义为add、edit