常用springmvc多种复杂嵌套实体前后端映射form提交和ajax提交

最近项目用到了很多复杂自定义对象的自动注入总结一下以备不时之需,包含form方式和ajax方式的属性或者key的写法,感觉spring自带的映射已经足够强大

先定义一个复杂对象:Person

package com.lengedyun.springbootmybaitis.entity;

import lombok.Data;
import lombok.ToString;

import java.util.List;
import java.util.Map;

/**
 * 没有这两个注解的可以添加lombok依赖
 * 或者自己生成get,set,以及toString方法
 */
@Data
@ToString
public class Person {

    //简单参数类型
    private String pName;

    private Integer pAge;

    //对象类型
    private Son directSon;

    //简单类型列表嵌套
    private List<String> hobby;

    //对象类型列表嵌套
    private List<Son> sons;

    //map属性
    private Map<String,Object> friends;

}

lombok工具类依赖:

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
        </dependency>

子类:Son

package com.lengedyun.springbootmybaitis.entity;

import lombok.Data;
import lombok.ToString;

/**
 * 没有这两个注解的可以添加lombok依赖
 * 或者自己生成get,set,以及toString方法
 */

@Data
@ToString
public class Son {

    //简单参数类型
    private String sName;

    private Integer sAge;
}

测试类:BeanMappingTest

package com.lengedyun.springbootmybaitis.controller;

import com.lengedyun.springbootmybaitis.entity.Person;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/beanMappingController")
public class BeanMappingTest {

    @RequestMapping("/goTestPage")
    public String goTestPage(){
        return "beanmappingtest";
    }

    /**表单方式提交**/
    @RequestMapping("/formSubmit")
    public void formSubmit(Person person){
        System.out.println(person.toString());
    }

    /**Ajax方式提交**/
    @RequestMapping("/ajaxSubmit")
    public void ajaxSubmit(Person person){
        System.out.println(person.toString());
    }


   

}

测试页面:beanmappingtest.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>SpringMvcBean映射测试</title>
    <script type="text/javascript" th:src="@{/static/js/jquery-3.3.1.min.js}"></script>
</head>
<body>
<h2>form表单提交</h2>
<div>
<form id="beanMapping" action="/beanMappingController/formSubmit" method="post">
    父名称:<input id="pName" name="pName" type="text"></br>
    父年龄:<input id="pAge" name="pAge" type="text"></br>
    爱好:<input id="hobby1" name="hobby" type="checkbox" value="hobby1">学习<input id="hobby2" name="hobby" type="checkbox" value="hobby1">看书<br>
    <hr>
    <h3>家庭成员</h3>
    嫡长子:嫡长子名字:<input type="text" name="directSon.sName" id="directSonName">嫡长子年龄:<input type="text" name="directSon.sAge" id="directSonAge"><br>
    庶子1:庶子名字:<input type="text" name="sons[0].sName" id="sons1Name">庶子年龄:<input type="text" name="sons[0].sAge" id="sons1Age"><br>
    庶子2:庶子名字:<input type="text" name="sons[1].sName" id="sons2Name">庶子年龄:<input type="text" name="sons[1].sAge" id="sons2Age"><br>
    <hr>
    <h3>社会关系</h3>
    朋友:名字:<input type="text" name="friends[fName]" id="friedName"><br>
    领导:名字:<input type="text" name="friends[lName]" id="leaderName"><br>
    <hr>
    <input id="submit" type="submit" value="form提交"><br>
</form>
    <br>
    <input id="ajaxSubmit" type="button" value="ajax提交" onclick="ajaxSubmit()"><br>
</div>
</body>
<script>
    function ajaxSubmit() {
        $.ajax({
            url: '/beanMappingController/ajaxSubmit',
            type: 'POST',
            data: {
                "pName": 'pName',
                "pAge": 45,
                "hobby":'hobby1,hobby2',
                "directSon.sName": 'directSonName',
                "directSon.sAge": 22,
                "sons[0].sName": 'son1Name',
                "sons[0].sAge": 15,
                "sons[1].sName": 'son2Name',
                "sons[1].sAge": 12,
                "friends[fName]": 'fName',
                "friends[lName]": 'lName',
            },
            success: function (data) {
                console.log(data)
            },
            error: function () {

            },
        })
    }
</script>
</html>

效果图:

 

打印内容

 后半部分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值