java 前后台json的传递
2019独角兽企业重金招聘Python工程师标准>>>
java 的web项目中使用原生json,如下:
在@Controller中的方法代码:
//保存公估费信息和公估费明细@RequiresPermissions("bcasecost:bCaseCost:edit")@RequestMapping(value = "saveCaseCost")@ResponseBodypublic 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()); //查询条件:案件IdbCaseCost.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_typeif(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里的结构体
转载于:https://my.oschina.net/leeeeeee/blog/828266
java 前后台json的传递相关推荐
- Java中使用JSON数据传递
一.Java中使用JSON数据传递 pom依赖引入 <dependency><groupId>com.alibaba</groupId><artifactId ...
- Jmeter之Beanshell使用(二)Java处理JSON块
[环境] ①Jmeter版本:3.2,JDK:1.8 ②前置条件:将json.jar包置于..\apache-jmeter-3.2\lib\下,并将该jar包添加到测试计划的Library中:否则会报 ...
- c#(服务器)与java(客户端)通过socket传递对象_C#(服务器)与Java(客户端)通过Socket传递对象...
最近做项目,需要C#与java间的交互,也就是C#编写服务器,java编写客户端,让两者进行通信. 通信无非就是互发数据,首选Socket技术,通过TCP协议建立长连接,一般是以字节数组的形式传递数据 ...
- ajax json的参数,java ajax json参数
java ajax json参数 [2021-02-02 08:55:23] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&quo ...
- java+c#+json+时间_Java与C#间json日期格式互转完美解决方案
作用一种简单方便的数据传输方案,JSON已经成为替代XML的事实标准.然而在JSON中,时间(DateTime,Timestamp,Date等)格式一直没有很好地统一,当需要跨平台序列化/反序列化时, ...
- js与java对json的操作
JSON呢,是现在大部分,并且主流的传递数据的方式. 今天讲一下javascript的java对json的操作 提到js,当下就有一个比较主流的插件,vue.js,这个插件程序员没用过也都听说过吧, ...
- 快速上手JSON数据传递异常处理
目录 一.SpringMVC对JSON的支持 二.SpringMVC 的全局异常处理 一.SpringMVC对JSON的支持 ①JSON数据的格式分类: json的形式 {}->json对象 ...
- Java中的值传递和引用传递
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为 ...
- Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递?
来自:沉默王二 在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很 ...
最新文章
- python建站与java建站有何不同_详解模板建站和定制建站的不同之处
- BH60绝对位置旋转编码器编程资料
- Celery简介及Docker测试环境搭建
- linux php连接orcel,Linux下PHP连接Oracle数据库
- 160 - 52 egis.1
- 属性文法和语法制导翻译
- idea如何打开pom引用依赖_idea 怎么引入在pom.xml的jar
- 基于javaweb+jsp+mysql的美容院管理系统
- nginx 使用自定义 log_format 以及输出自定义http头
- 探讨职业化的表达方式
- 混动汽车HEV混合驱动的MPC控制
- 微信棋牌平台开发架设HTML5手机端页面缩放搭建教程
- 【GT】Assembler 源码解读及使用 !Cocos Creator!
- 一些货币政策及金融术语简介
- BZOJ-2037 Sue的小球 DP+费用提前
- Linux-Ubuntu系统配置深度学习环境搭建
- sparkGraphX 图操作:pregel(加强的aggregateMessages)
- IO IR 个人作业汇总——康熙
- php 和 photoshop,pscc和ps有什么区别
- 如何迁移操作系统到ssd固态硬盘?
热门文章
- SpringBoot+Vue项目准妈妈孕期交流平台
- 了解MySQL,走进他的心
- linux 解决安装Nvidia驱动后,或者声音选项里只有HDMI,声卡没有声音的方法[集锦]
- 支付宝接口调试完成后,接入本地项目中
- i7 10510U性能怎么样?相当于台式机什么水平
- 微服务分布式事务实战(一) 项目需求描述和实现步骤
- 枚举法——python
- 一、信息系统开发方法及技术
- 网址保存到桌面快捷方式
- kettle错误“Couldn‘t get field info from [select * from t2]“