参数绑定:数组类型参数绑定-----集合类型参数绑定----格式类型转换(日期) ----@DateTimeFormat

数组类型参数绑定

如果说表单中的那么属性有多个,此时我们在pojo类中定义该那么熟悉为数组类型产生映射的时候
首先是前端页面表单应该是含有多选

<form action="${pageContext.request.contextPath}/role/testArrays.action" method="post">
    id:<input type="text" name="role.r_id" placeholder="id值"/><br>
    角色名称:<input type="text" name="role.r_name" placeholder="角色名称"/><br>
    角色描述:<input type="text" name="role.r_desc" placeholder="角色描述"/><br>
    时间:<input type="text" name="role.r_rTime" placeholder="更新时间"/><br>
    兴趣爱好:<input type="checkbox" name="hobby" value="篮球">篮球
            <input type="checkbox" name="hobby" value="足球">足球
            <input type="checkbox" name="hobby" value="乒乓球">乒乓球
            <input type="checkbox" name="hobby" value="羽毛球">羽毛球
    <input type="submit" value="提交Role包装类"/>
</form>

然后就是我们的包装类里面必须含有数组的类型属性

public class RoleVO implements Serializable {

    private Role role;

    private String[] hobby;
}

最后就是相当于Servlet的类

 @RequestMapping("/role/testArrays.action")//指定访问路由
 public ModelAndView testArrays(String[] hobby) {//属性直接以数组接收
        System.out.println(Arrays.toString(hobby));// [篮球, 足球, 乒乓球, 羽毛球]
        //System.out.println(roleVO);

        return null;
 }

这样我我们就达到了接收前端传回的多选信息的接收
~~
~~
~~
~~
~~
~~

集合类型参数绑定

如果我们是艳接收很多个pojo实体类对象应该这么解决
当表单中提交多条记录的时候,我们就采用多记录形式提交
实现方式:在pojo类中定义集合类型的属性,请求的方法参数直接使用pojo包装类
每一行哦都是一个对象
代码演示

public class RoleVO implements Serializable {
    private Role role;
    private String[] hobby;
    // 集合
    private List<Role> roleList;// 多条记录
    private Map<String,Role> roleMap;//设定key为String类型,Value是Role对象

}


//Controller控制器
//测试  提交多条记录  集合类型
@RequestMapping("/role/multiCommitData.action") 
public ModelAndView testMultiCommitData(RoleVO roleVO) {// 类型名称一致 自动注入
    System.out.println(roleVO);

    return null;
}

jap演示

<form action="${pageContext.request.contextPath}/role/multiCommitData.action" method="post">
		<table class="list">
            <tr>
                <th>序号</th>
                <th>角色名称</th>
                <th>角色描述</th>
                <th>更新时间</th>
                <th>操作</th>
            </tr>
            <c:forEach var="role" items="${ list }" varStatus="status">
            <tr>
                <td>${ status.count }<%--1  2 3 4  5 6 7 --%>
                  <%-- <input type="hidden" name="roleList[${status.index}].r_id" value="${role.r_id}">--%>
                   <input type="hidden" name="roleMap[${status.index}].r_id" value="${role.r_id}">
                </td>
                <td>
                   <%-- <input type="text" name="roleList[${status.index}].r_name" value="${ role.r_name }">--%>
                    <input type="text" name="roleMap[${status.index}].r_name" value="${ role.r_name }">
                </td>
                <td>
                   <%-- <input type="text" name="roleList[${status.index}].r_desc" value="${ role.r_desc }">--%>
                    <input type="text" name="roleMap[${status.index}].r_desc" value="${ role.r_desc }">
                </td>
                <td>
                	<a class="fa fa-pencil" title="编辑" href="<c:url value="/role/updateRole?id=${role.r_id}" />"></a>
                	&nbsp;&nbsp;
                	<a class="fa fa-remove" title="删除" href="<c:url value="/role/deleteRole?id=${role.r_id}" />"></a>
                </td>
            </tr>
            </c:forEach>
        </table>
            <input type="submit" value="批量修改">
</form>

~~
~~
~~
~~
~~
~~

格式类型转换(日期)

一般来说我们在写日期的时候只能写yyyy/MM/dd 写错了就会报错400 如何才能让我们呢想怎么写日期格式就能怎么写日期格式呢??
我们使用SpringMVC内部提供的数据类型转换@DtaTimeFormat()注解来解决这个问题
在定义日期属性的时候在上面加注解@DateTimeFormat()

public class Role implements Serializable {
    /*按照数据库中的字段匹配*/
    private Integer r_id;
    private String r_name;
    private String r_desc;
    @DateTimeFormat(pattern = "yyyy==MM==dd")
    private Date r_rTime;// Date 默认格式是:2021/3/10
    
}
上一篇:jenkins用户权限管理


下一篇:mysql replace into 缺陷的解决方案