背景

  记一次很难受的功能实现
    跑了10年左右的老项目,看一眼配置就知道是老ERP了,这次由于新增功能,是的,10年了还有功能要增加。要从前台批量写n多数据传给后端,我第一反应就是在js造对象,ajax传对象,然而,上边要求尽量不要改配置,尊崇以前的写法…保证客户那边的稳定性,开口就是老产品了,我竟然真的乖乖的研究起怎么不用对象封装实现动态数据的传输。迷瞪了下抽了根烟,难道要我在ajax的data写if、else?不不不,作为一个没见过世面的码农,先不说能不能写,就算能,也果断拒绝,于是,又干起了左手js右手java的买卖。

正题-配置

  想通了之后就简单多了
  先搞json包,刚开始下载jackson,感觉太麻烦,搞半天jar包才勉强启动不报错,所以,毅然决然maven下了fastjson,下边是mvc的配置

<!-- 启用默认配置 -->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <!-- 配置Fastjson支持 -->
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=UTF-8</value>
                        <value>application/json</value>
                    </list>
                </property>
                <property name="features">
                    <list>
                        <value>WriteMapNullValue</value>
                        <value>QuoteFieldNames</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

前端

  构造list对象,ajax传值

var list = [];
//循环push
list.push({'sj1':变量1,"sj2":变量2,"sj3":变量3});
...
//ajax传值
data:JSON.stringify(list);

  值的效果:

[{"sj1":变量1,"sj2":变量2,"sj3":变量3},
{"sj1":变量1,"sj2":变量2,"sj3":变量3},
{"sj1":变量1,"sj2":变量2,"sj3":变量3}...]

  之前我js是这么做的:new了一个map,扔到list,console出来的是空,就是说JSON.stringify()转出来是空的,原因附在下边了,一看就明白了。

  JSON.stringify()为空的原因

后端

  用@RequestBody注解标识 封装传过来的对象

public String saveData(@RequestBody List<Map<String,String>> dataList){

}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐