java 前后台json的传递
2017-01-20 00:00
253 查看
java 的web项目中使用原生json,如下:
在@Controller中的方法代码:
@Service服务层方法:
主要是这个返回值 -- message = "{'status':'2','message':'Record not only!--该案件存在多条未审核未开票且计算过的公估费记录'}";
jsp页面中使用该json串代码如下:
function(result){
/* 。。。。。*/
}
这里的result既是从后台传回来的json串,直接当成c里的结构体
在@Controller中的方法代码:
//保存公估费信息和公估费明细 @RequiresPermissions("bcasecost:bCaseCost:edit") @RequestMapping(value = "saveCaseCost") @ResponseBody public Object saveCost(CountInfo countInfo ,Model model,HttpServletRequest request) { //打印测试信息输出的位置 System.out.println("<com.thinkgem.jeesite.modules.dt.bcasecost.web.BCaseCostController.countCaseCost>"); //调用服务层方法,判断案件是否已经计算过公估费,已整理过则更新该信息;否则,通过整理页面提交的数据组成BCaseCost记录,并插入到数据库BCaseCost表中 String message = null; String bCaseMainId = countInfo.getbCaseMain().getId(); BCaseCost bCaseCost = bCaseCostService.isCounted(bCaseMainId); //判断案件是否已经计算过公估费 if(null == bCaseCost){ //没有计算过公估费的案件保存记录执行插入方法 message = bCaseCostService.saveCost(countInfo); }else{ //计算过的公估费再次保存需要更新公估费记录 message = bCaseCostService.updateCost(countInfo,bCaseCost); } return JSON.parse(message); //这里很关键 }
@Service服务层方法:
/** * 插入新的公估费记录 * @param countInfo * @return */ private String saveNewCost(CountInfo countInfo){ //测试时打印输出位置 System.out.println("<com.thinkgem.jeesite.modules.dt.bcasecost.service.BCaseCostService.saveNewCost>"); //装配插入或更新的公估费表和公估费详情子表的实体对象 BCaseCost bCaseCost = new BCaseCost(); //页面提交的案件信息 BCaseMain bCaseMain = bCaseMainService.get(countInfo.getbCaseMain().getId()); //给controller的message返回到页面 String message; //判断给定案件ID和公估费类型为0的公估费记录是否存在 String isHavedRecord = null; bCaseCost.setBCaseMainId(bCaseMain.getId()); //查询条件:案件Id bCaseCost.setCommtype("0"); //查询条件:0-计算出来的公估费 bCaseCost.setIsinvoiced("N"); //查询条件:N-未开发票 isHavedRecord = dao.isHavedRecord(bCaseCost); System.out.println("案件ID为: " + bCaseMain.getId() + " 的案件在公估费表存在状态:" + isHavedRecord); List<BCaseCost> bCaseCostIsOnly = dao.getCountedCostList(bCaseCost); //如果上述查询条件查询存在唯一的记录,表示该公估费正常计算过且保存过,下一步可以开启审核,不必再次保存,直接将该公估费id传回Controller返回给页面即可 //如果,查询不为空,表示已经保存过计算过的结果 if(null != bCaseCostIsOnly && 0 != bCaseCostIsOnly.size()){ System.out.println("查询到的记录条数:" + bCaseCostIsOnly.size()); //记录存在不唯一 if(1 != bCaseCostIsOnly.size()){ message = "{'status':'2','message':'Record not only!--该案件存在多条未审核未开票且计算过的公估费记录'}"; return message; } //记录存在且唯一 message = "{'status':'1','message':'" + bCaseCostIsOnly.get(0).getId() + "'}"; System.out.println(message); return message; } //上面条件过滤后,否则,准备插入一条新计算后公估费记录. String countType = countInfo.getCountType(); //计算类型:01-常规,00-重大疑难 String expenseType = countInfo.getExpenseType(); //案件的合同收费类型:EXPENSE_TYPE=fee_type:1-包干,2-分项,3-包干加查勘,4-分项加查勘 Double caseBaseFee = countInfo.getCaseBaseFee().doubleValue(); //案件基本公估费 Double majorFee = countInfo.getMajorFee().doubleValue(); //重大疑难费用 Double outCityFee = countInfo.getOutCityFee().doubleValue(); //市外交通费 Double inCityFee = countInfo.getInCityFee().doubleValue(); //市内交通费 Double mealFee = countInfo.getMealFee().doubleValue(); //餐费费 Double hotelFee = countInfo.getHotelFee().doubleValue(); //住宿费 Double dataFee = countInfo.getDataFee().doubleValue(); //查阅资料费 Double otherFee = countInfo.getOtherFee().doubleValue(); //其它费用 Double costFeeSum = countInfo.getCostFeeSum().doubleValue(); //公估费总计 Double costFinalFee = countInfo.getCostFinalFee().doubleValue(); //最终公估费 Double cess = costFinalFee * 6.0000 / 100.0000; //税额 Double income = costFinalFee - cess; //收入 //页面传来的公估费的计算后的信息 System.out.println("页面提交信息>>>>> 公估费计算类型:" + countType + ",合同收费类型:" + expenseType + ",基本公估费:" + caseBaseFee + ",重大疑难:" + majorFee + ",城际交通费:" + outCityFee + ",市内交通费:" + inCityFee + ",住宿费:" + hotelFee + ",餐费:" + mealFee + ",查阅资料费:" + dataFee + ",其它费用:" + otherFee + ",公估费总计:" + costFeeSum + ",最终公估费:" + costFinalFee ); System.out.println("页面提交的BCaseMain表信息>>>>> ID:" + bCaseMain.getId() + ",案件状态:" + bCaseMain.getCaseState() + ",合同号:" + bCaseMain.getInsurCompProtocol()); //插入新记录 //生成唯一ID给子表使用 bCaseCost.preInsert(); String bCaseCostId = bCaseCost.getId(); System.out.println("初始化并插入的公估费记录>>>>>> ID:" + bCaseCostId); //测试打印公估费记录唯一ID //初始化 bCaseCost.setBCaseMainId(bCaseMain.getId()); //设置案件主表ID:页面提交 bCaseCost.setCalMode(countType); //设置公估费计算类型:页面提交 bCaseCost.setCommtype("0"); //设置公估费类型:0-公估费 ,1-加项 ,2-减项 bCaseCost.setIncome(new BigDecimal(income)); //设置收入 = 最终公估费-税额 bCaseCost.setCess(new BigDecimal(cess)); //设置税额 = 根据最终公估费在本方法内计算(已经固定为最终公估费*6%) bCaseCost.setComm(new BigDecimal(costFinalFee)); //设置最终公估费:页面返回计算后的最终公估费 bCaseCost.setIsinvoiced("N"); //设置开票状态:N-未开票 Y-已开票 bCaseCost.setBilldate(new Date()); //设置记账日期:当前日期 bCaseCost.setExamStatus("0"); //设置审核状态:0-未审核 1-审核通过 2-审核退回 bCaseCost.setCommconf("0"); //设置实收状态:0-未实收 1-已实收 bCaseCost.setOfficeId(bCaseMain.getOffice().getId()); //部门编号 bCaseCost.setDepartment(bCaseMain.getDepartment()); //公司编号 bCaseCost.setInsurCompClientCode(bCaseMain.getInsurCompClientCode()); //委托人编码-来自b_case_main表 //测试使用 bCaseCost.setRemarks("lh-测试数据.公估费计算保存插入模块"); //公估费插入 dao.insert(bCaseCost); /*//将案件表中该案件的公估费金额写入 --此操作应该在审核通过后进行写入主表的finalFee字段 BCaseMain bCaseMainFee = bCaseMainService.get(bCaseCost.getBCaseMainId()); String sql = ""; bCaseMainFee.setFinalFee( bCaseCost.getComm() ); bCaseMainService.save(bCaseMainFee);*/ if("01".equals(countType)){ //插入BCaseCostDetail表insertBCaseCostDetail(,"00",)方法中的00、01...05请参考字典表 type = surcharge_fee_type if(outCityFee > 0.0){ //城际交通费 insertBCaseCostDetail(bCaseCost,"00",new BigDecimal(outCityFee)); //子表初始化、装配到主表的容器对象内 ,最后插入子表内 } if(inCityFee > 0.0){ //市内交通费 insertBCaseCostDetail(bCaseCost,"01",new BigDecimal(inCityFee)); //子表初始化、装配到主表的容器对象内 ,最后插入子表内 } if(hotelFee > 0.0){ //住宿费 insertBCaseCostDetail(bCaseCost,"02",new BigDecimal(hotelFee)); //子表初始化、装配到主表的容器对象内 ,最后插入子表内 } if(mealFee > 0.0){ //餐费 insertBCaseCostDetail(bCaseCost,"03",new BigDecimal(mealFee)); //子表初始化、装配到主表的容器对象内 ,最后插入子表内 } if(dataFee > 0.0){ //查阅资料费 insertBCaseCostDetail(bCaseCost,"04",new BigDecimal(dataFee)); //子表初始化、装配到主表的容器对象内 ,最后插入子表内 } if(otherFee > 0.0){ //其它费用 insertBCaseCostDetail(bCaseCost,"05",new BigDecimal(otherFee)); //子表初始化、装配到主表的容器对象内 ,最后插入子表内 } } message = "{'status':'0','message':'" + bCaseCost.getId() + "'}"; System.out.println(message); return message; }
主要是这个返回值 -- message = "{'status':'2','message':'Record not only!--该案件存在多条未审核未开票且计算过的公估费记录'}";
jsp页面中使用该json串代码如下:
/* [保存]按钮点击事件 */ function saveCaseCost(){ var isCounted = $("#isCounted"); if(1 == buttonClickOrder){ $.post( "${ctx}/bcasecost/bCaseCost/saveCaseCost", $("#BCaseCostCountForm").serialize(), function(result){ //jBox.alert(result); //var myJsonMessage = JSON.parse(result); /* var myJson = result.parseJSON(); var last=obj.toJSONString(); //将JSON对象转化为JSON字符 或者 var last=JSON.stringify(obj); //将JSON对象转化为JSON字符 */ //jBox.alert(result.status); if("0" == result.status || "1" == result.status){ //jBox.alert(result.message); if("0" == result.status){ jBox.alert("保存成功!"); }else{ jBox.alert("保存成功!"); } $("#bCaseCostId").val(result.message); $("#isCounted").val("1"); buttonClickOrder = 2; }else if("2" == result.status){ jBox.alert(result.message); buttonClickOrder = 1; }else{ jBox.alert("数据存储过程错误,请联系维护人员解决!"); } }); }else if(0 == buttonClickOrder){ jBox.alert("计算方式已经改变,请重新计算公估费!"); } }
function(result){
/* 。。。。。*/
}
这里的result既是从后台传回来的json串,直接当成c里的结构体
相关文章推荐
- java后台服务器端传递json字符串到前端,前端识别错误问题
- java 后台实现ajax post跨域请求传递json格式数据获取json数据问题
- java后台传递json数据到前端并渲染react组件(react+struts2)
- 关于Java后台的Json数据的传递问题
- java后台传递json到前台 中文乱码解决方法
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- jquery通过ajax-json访问java后台传递参数,通过request.getParameter获取不到参数的说明
- 使用JSON传递接收集合,对象map for json,json for java
- Json传递中文到struts2后台乱码问题
- java 后台返回json数据给前台
- ajax和json跟java实现List、Map直接传递
- EXTJS与java后台交互(二)JSON使用
- JAVA中使用JSON进行数据传递
- fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map
- json的处理java后台和前台之间
- Jquery下Json数据的传递与解析(asp.net mvc与asp.net api下后台json接收方式的不同)
- 关于Json传递中文到struts2后台乱码问题
- js中的多组json数据同时通过ajx传递到php后台