1.前言

由于本人在使用vue.js访问后台的时候,传递json数组数据到后台,意外的出现了不能解析的错误,使用BeanUtils不能设置集合的问题的解决办法!因此记录下来!

当前使用的解析JSON的工具为:fastjson 1.2.58 版本

2.想要解析vue的ajax的post请求的方法

需要在请求的方法参数上添加@RequestBody Map<String, String> params

 	@RequestMapping("/addInstrument")
    public String addInstrument(@RequestBody Map<String, String> params) {
        Map<String, String> trimParams = SpaceTrimUtils.trimParamsValue(params);
        try {
        	// 这个EasyBeanUtils是一个BeanUtils的封装包
            Instrument instrument = EasyBeanUtils.setObjectValues(Instrument.class, trimParams);
            // 借助hibernate校验javabean获取错误信息
            String msg = ValidateUtils.validateAndGetMessage(instrument);
            if (!StringUtils.isEmpty(msg)) {
                return JsonResultUtils.getJsonFail(msg);
            }
            String name = instrument.getName();
            if(StringUtils.isEmpty(name)){
                return JsonResultUtils.getJsonFail("当前的器械包名称不能为空!");
            }
            /*判断当前的器械名称是否重复*/
            int nameCount = new QInstrument().name.eq(name).findCount();
            if (nameCount > 0) {
                return JsonResultUtils.getJsonFail("当前添加的器械名称已重复!");
            }
            instrument.setCreatedate(new Date());
            Ebean.save(instrument);
            return JsonResultUtils.getJsonSuccess();
        } catch (Exception e) {
            e.printStackTrace();
            return JsonResultUtils.getJsonFail("添加器械失败!");
        }
    }

这里使用曲线补救的方式,直接从参数中获取数据然后将其转换称对应的对象

3.前台的vue的请求为:

注意这里的thatCompoments为一个对象数组,传递参数的时候需要使用:JSON.stringify()方法将这个对象数组变为json数据发送到后台

var thatCompoments=JSON.stringify(thatCompoments);
var compment=thatCompoments;
axios
	.post(this.httpUrl + "/updateInspackage", {
		"inspackageDetails":compment
		
	})

前台传递的数据为:
在这里插入图片描述

后台的解析结果为:
在这里插入图片描述
解析成功!

4.总结

1.在使用vue.js传递数组参数的时候必须使用JSON.stringify()将数组数据转换为json,发送到后台,后台处理的时候不能使用BeanUtils直接将数据放入对象中会出现错误的

2.后台在解析参数的时候需要使用fastjson将指定的字符转换为对象数组,最后进行处理

3.在处理Hibernate级联操作的时候需要小心cascade = CascadeType.MERGE这个的使用,可能会出现错误的级联操作

以上纯属个人见解,如有问题请联系本人!

Logo

前往低代码交流专区

更多推荐