编辑数据-表单保存
2015-04-27 17:55
197 查看
上次是编辑数据,进行回显。这次继续说编辑数据。在编辑完成后,点击保存将数据保存到数据库。
之前的做法是通过ajax,将表单上的数据异步传动到后台然后调用后台方法,将数据更新到数据。那如果窗体上的数据很多,ajax调用后台controller的方法是,就需要定义多个变量进行传输。
这里对传递的变量,封装了一个方法,利用map传输。
form.jsp-js=
后台controller代码:
通过js封装getFormParameterMap这样一个方法,将编辑窗体中的数据拿到放到map里,传到后台。不过值得注意的是,同样不适用于easyui的控件,通过getFormParameterMap方法,可以看到,通过input拿到了各个控件的值。所以,如果想拿到easyui控件的值,留待后期的改进。
之前的做法是通过ajax,将表单上的数据异步传动到后台然后调用后台方法,将数据更新到数据。那如果窗体上的数据很多,ajax调用后台controller的方法是,就需要定义多个变量进行传输。
这里对传递的变量,封装了一个方法,利用map传输。
form.jsp-js=
function save(){ var parameterMap = getFormParameterMap(); var jobtypename = $.trim(parameterMap["jobtypename"]); if(jobtypename == "" || jobtypename == null){ alert('<spring:message code="syspages.system.datajobtype.noNull"/>'); return; } $.ajax({ type: "POST", url: getRootPath() + "/dataJobtype/save.do;"+ $.now(), data:parameterMap, dataType: "json", success: function(data){ if(data.message=="<spring:message code="syspages.system.datajobtype.saveSuccess"/>"){ alert('<spring:message code="label.saveSuccess"/>'); }else{ // alert('<spring:message code="label.saveError"/>'); alert(data.message); $('#jobtypename').val(""); $("input[name=jobtypename]").focus(); return; } try{ var indexContentWindow = getIndexContentWindow(); var modalWindowObj = indexContentWindow.modalWindowObj; modalWindowObj.window('close'); } catch(e){ } var indexContentWindow = getIndexContentWindow(); try{ var modalWindowOpener = indexContentWindow.modalWindowOpener; modalWindowOpener.location.reload(); } catch(e){ } } }); } function getFormParameterMap(){ var parameterMap = {}; parameterMap.visitURl = window.document.location.pathname; var inputs = document.getElementsByTagName("INPUT"); for(var i=0; i<inputs.length; i++){ var input = inputs[i]; if(input.type.toUpperCase()=="TEXT" || input.type.toUpperCase()=="PASSWORD" || input.type.toUpperCase()=="FILE"){ parameterMap[input.name] = input.value; } else if(input.type.toUpperCase() == "CHECKBOX"){ parameterMap[input.name] = input.checked; } else if(input.type.toUpperCase() == "RADIO"){ if(input.checked){ parameterMap[input.name] = input.value; } } }
后台controller代码:
@RequestMapping("/save.do") @Override @ResponseBody public Object save(HttpServletRequest request) { String id = CommonUtil.toNull(request.getParameter("id")); String jobtypename = CommonUtil.toNull(request.getParameter("jobtypename")); String description = CommonUtil.toNull(request.getParameter("description")); String drStr = CommonUtil.toNull(request.getParameter("dr")); Integer dr = null; if (drStr != null) { dr = Integer.valueOf(drStr); } String ts = CommonUtil.toNull(request.getParameter("ts")); DataJobtype dataJobtype = null; List<DataJobtype> dataJobtypeList= null; dataJobtypeList = dataJobtypeService.queryByName(jobtypename); try { if (id == null) { if(dataJobtypeList.size()>0){ ResourceBundleMessageSource messageSource=BeanFactory.getBean(ResourceBundleMessageSource.class); String str = messageSource.getMessage("syspages.system.datajobtype.alreadyExist", null, Locale.getDefault()); return createSuccessMessage(str).toString(); }else{ dataJobtype = new DataJobtype(); dataJobtype.setJobtypename(jobtypename); dataJobtype.setDescription(description); } } else { if(dataJobtypeList.size()==1){ if(!id.equals(dataJobtypeList.get(0).getId()) ){ ResourceBundleMessageSource messageSource=BeanFactory.getBean(ResourceBundleMessageSource.class); String str = messageSource.getMessage("syspages.system.datajobtype.nameConflict", null, Locale.getDefault()); return createSuccessMessage(str).toString(); } } dataJobtype = dataJobtypeService.queryEntityById(DataJobtype.class, id); } BeanUtils.populate(dataJobtype, request.getParameterMap()); dataJobtype.setId(id); dataJobtypeService.saveEntity(dataJobtype); // return createSuccessMessage("操作成功!").toString(); ResourceBundleMessageSource messageSource=BeanFactory.getBean(ResourceBundleMessageSource.class); String str = messageSource.getMessage("syspages.system.datajobtype.saveSuccess", null, Locale.getDefault()); return createSuccessMessage(str).toString(); } catch (Exception e) { e.printStackTrace(); return createErrorMessage(e.getMessage()).toString(); } }
通过js封装getFormParameterMap这样一个方法,将编辑窗体中的数据拿到放到map里,传到后台。不过值得注意的是,同样不适用于easyui的控件,通过getFormParameterMap方法,可以看到,通过input拿到了各个控件的值。所以,如果想拿到easyui控件的值,留待后期的改进。
相关文章推荐
- history.go(-1)后表单数据不能保存是由session_start()造成的,解决办法
- 利用userData实现客户端保存表单数据
- JS定时保存表单数据(UserData 行为)
- 在Adobe Reader中保存PDF表单数据的方法
- Yii 表单输入数据保存不成功
- JS弹出层来对表单数据进行编辑
- jqGrid与Struts2的结合应用(三) —— 使用自定义表单对话框编辑Grid数据
- struts 提交表单保存数据后清空表单数据查询
- jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
- 实现双击进入编辑,失去焦点后保存数据(Angular)
- jqgrid saveRow 保存行 编辑数据向后台保存的使用
- php通过post将表单数据保存到数据库实例
- 通过JSON保存多表单数据
- ListView 换行自动保存刚才焦点行编辑数据
- GridControl编辑后如何保存数据
- SSM编辑时数据无法保存到数据库里
- 保存数据返回后可以继续编辑
- jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
- js--easyUI----jQuery easyui datagrid 点击某个单元格即进入编辑状态,焦点移开后,保存数据
- 编辑数据-表单回显