property path is neither an array nor a List nor a Map 前端post传参问题, 复杂表单参数

0.问题

在这里插入图片描述
后端可能出现的错误提示:
是不是一脸懵逼, 来, 我们来分析一下
在这里插入图片描述
在这里插入图片描述

settlementRuleList[0]settlementAmountType: 1这样的一个内容,结果传到后台时被解析成了settlementRuleList[0][settlementAmountType]: 1。

你没看错, 多了一个[ ],这就是被坑的地方 。
这时候SpringMVC不知道怎么封装对象中的数组对象, 然后报错了。很沙雕的操作。

1.表单结构

{
    "orderStartTime":"2021-07-01 00:00:00",
    "orderEndTime":"2021-07-15 23:59:59",
    "taxRate":"6",
    "commissionRuleType":"2",
    "settlementRuleList":[
        {
            "orderMinNumber":"213",
            "orderMaxNumber":"123",
            "stepList":[
                "24",
                "36"
            ],
            "settlementAmountType":"1",
            "settlementAmountFee1":"100"
        },
        {
            "orderMinNumber":"54678",
            "orderMaxNumber":"87987",
            "stepList":"36",
            "settlementAmountType":"1",
            "settlementAmountFee1":"100",
            "settlementAmountFee2":"78"
        }
    ],
    "settlementBizConfigId":"60d2e59cc2c1d353ad882b14"
}

2.表单样式

在这里插入图片描述

3.问题解决

前端ajax请求, 需要注意的就是JSON.stringify(表单参数), 以及contentType传递json格式

				$.ajax({
                    url:"../../settlementRuleConfig/update",
                    type: "POST",
                    data: JSON.stringify(formData),
                    dataType: "json",
                    contentType: "application/json",
                    success: function (data) {
                        if (data.code === 200){
                            $("#settlement_rule_config_list  #data-table").datagrid('reload', $("#settlement_rule_config_list  #tb > form").serializeJsonNotNull());
                            $.messager.show({title: '提示', msg: '操作成功!', showType: 'show'});
                        } else {
                            $("#settlement_rule_config_list  #data-table").datagrid('reload', $("#settlement_rule_config_list  #tb > form").serializeJsonNotNull());
                            $.messager.show({title: '提示', msg: data.message, showType: 'show'});
                        }
                    }
                });

后端接口接收参数, 打上@RequestBody注解, 接收前端传递的json格式参数

@RequestMapping("/update")
	public Result update(@RequestBody SettlementRuleConfigVo configVo){
		log.info("【修改规则】表单参数:" + JSON.toJSONString(configVo));
		return Result.OK();
	}

4.处理后效果

在这里插入图片描述


版权声明:本文为weixin_43687353原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。