数组类型参数绑定
如果说表单中的那么属性有多个,此时我们在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>
<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
}