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的传递相关推荐

  1. Java中使用JSON数据传递

    一.Java中使用JSON数据传递 pom依赖引入 <dependency><groupId>com.alibaba</groupId><artifactId ...

  2. Jmeter之Beanshell使用(二)Java处理JSON块

    [环境] ①Jmeter版本:3.2,JDK:1.8 ②前置条件:将json.jar包置于..\apache-jmeter-3.2\lib\下,并将该jar包添加到测试计划的Library中:否则会报 ...

  3. c#(服务器)与java(客户端)通过socket传递对象_C#(服务器)与Java(客户端)通过Socket传递对象...

    最近做项目,需要C#与java间的交互,也就是C#编写服务器,java编写客户端,让两者进行通信. 通信无非就是互发数据,首选Socket技术,通过TCP协议建立长连接,一般是以字节数组的形式传递数据 ...

  4. ajax json的参数,java ajax json参数

    java ajax json参数 [2021-02-02 08:55:23]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&quo ...

  5. java+c#+json+时间_Java与C#间json日期格式互转完美解决方案

    作用一种简单方便的数据传输方案,JSON已经成为替代XML的事实标准.然而在JSON中,时间(DateTime,Timestamp,Date等)格式一直没有很好地统一,当需要跨平台序列化/反序列化时, ...

  6. js与java对json的操作

    JSON呢,是现在大部分,并且主流的传递数据的方式. 今天讲一下javascript的java对json的操作 提到js,当下就有一个比较主流的插件,vue.js,这个插件程序员没用过也都听说过吧, ...

  7. 快速上手JSON数据传递异常处理

    目录 一.SpringMVC对JSON的支持 二.SpringMVC 的全局异常处理 一.SpringMVC对JSON的支持 ①JSON数据的格式分类: json的形式 {}->json对象  ...

  8. Java中的值传递和引用传递

    当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?      答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为 ...

  9. Stack Overflow上188万浏览量的提问:Java 到底是值传递还是引用传递?

    来自:沉默王二 在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很 ...

最新文章

  1. python建站与java建站有何不同_详解模板建站和定制建站的不同之处
  2. BH60绝对位置旋转编码器编程资料
  3. Celery简介及Docker测试环境搭建
  4. linux php连接orcel,Linux下PHP连接Oracle数据库
  5. 160 - 52 egis.1
  6. 属性文法和语法制导翻译
  7. idea如何打开pom引用依赖_idea 怎么引入在pom.xml的jar
  8. 基于javaweb+jsp+mysql的美容院管理系统
  9. nginx 使用自定义 log_format 以及输出自定义http头
  10. 探讨职业化的表达方式
  11. 混动汽车HEV混合驱动的MPC控制
  12. 微信棋牌平台开发架设HTML5手机端页面缩放搭建教程
  13. 【GT】Assembler 源码解读及使用 !Cocos Creator!
  14. 一些货币政策及金融术语简介
  15. BZOJ-2037 Sue的小球 DP+费用提前
  16. Linux-Ubuntu系统配置深度学习环境搭建
  17. sparkGraphX 图操作:pregel(加强的aggregateMessages)
  18. IO IR 个人作业汇总——康熙
  19. php 和 photoshop,pscc和ps有什么区别
  20. 如何迁移操作系统到ssd固态硬盘?

热门文章

  1. SpringBoot+Vue项目准妈妈孕期交流平台
  2. 了解MySQL,走进他的心
  3. linux 解决安装Nvidia驱动后,或者声音选项里只有HDMI,声卡没有声音的方法[集锦]
  4. 支付宝接口调试完成后,接入本地项目中
  5. i7 10510U性能怎么样?相当于台式机什么水平
  6. 微服务分布式事务实战(一) 项目需求描述和实现步骤
  7. 枚举法——python
  8. 一、信息系统开发方法及技术
  9. 网址保存到桌面快捷方式
  10. kettle错误“Couldn‘t get field info from [select * from t2]“