使用ajax请求提交数据时,日期类型无法转换为JAVA中的日期类型
程序员文章站
2022-07-15 15:37:07
...
在做毕业项目时碰见日期类型无法传到后台controller中的问题,因为springMVC中没有提供默认的日期转换器,前端页面传过来的日期类字符串无法转换为java中的日期类型,使用@DatetimeFormat注解完成转换,做一个笔记。
前端代码:
表单中含有日期类型(会员生日),使用ajax请求提交数据时无法传到后台
<form class="form-horizontal" id="add_member_box">
<div class="form-group">
<label for="inputMenuname"
class="col-sm-offset-1 col-sm-4 control-label">会员名字</label>
<div class="col-sm-4">
<input type="text" class="form-control" name="vipname" >
</div>
</div>
<div class="form-group">
<label for="inputMenuname"
class="col-sm-offset-1 col-sm-4 control-label">会员电话</label>
<div class="col-sm-4">
<input type="text" class="form-control" name="vipphone" >
</div>
</div>
<div class="form-group">
<label for="inputMenuname"
class="col-sm-offset-1 col-sm-4 control-label">会员级别</label>
<div class="col-sm-4">
<input type="text" name="viptype" class="form-control">
</div>
</div>
<div class="form-group">
<label for="inputMenuname"
class="col-sm-offset-1 col-sm-4 control-label">会员生日</label>
<div class="col-sm-4">
<input type="text" class="form-control" name="vipbrithday">
</div>
</div>
<div class="form-group">
<label for="inputMenuname"
class="col-sm-offset-1 col-sm-4 control-label">会员编号</label>
<div class="col-sm-4">
<input type="text" class="form-control" name="vipcard" >
</div>
</div>
<div class="form-group">
<label for="inputMenuname"
class="col-sm-offset-1 col-sm-4 control-label">消费次数</label>
<div class="col-sm-4">
<input type="text" class="form-control" name="vipcounts" >
</div>
</div>
<div class="form-group">
<label for="inputMenuname"
class="col-sm-offset-1 col-sm-4 control-label">会员所在店铺</label>
<div class="col-sm-4">
<select id="select_member_shopName" class="form-control" name="vshopid">
</select>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-5 col-sm-7">
<button type="submit" class="btn btn-primary"
id="add_member_btn">保存</button>
</div>
</div>
</form>
ajax代码如下:
// 提交添加菜品分类表单
$("#add_member_btn").click(function() {
$.ajax({
url: "/member/addMember",
data: $("#add_member_box").serialize(),
type: "POST",
beforeSend: function() {
if ($("#loding").length > 0) {
$("#loding").showLoading();
}
},
success: function(result) {
if ($("#loding").length > 0) {
$("#loding").hideLoading()
}
to_page(1,1);
$.toast({
text: "添加信息成功!",
heading: "提示:",
position: "top-right",
icon: "success",
});
/* console.log(result); */
//处理数据
},
error: function(result) {
if ($("#loding").length > 0) {
$("#loding").hideLoading()
}
/* alert(result.msg); */
$.toast({
text: "数据丢失请重试...",
heading: "提示:",
position: "top-right",
icon: "error",
});
}
});
});
controller中使用pojo类接受前台页面传过来的数据代码如下:
/**
* 添加一条会员信息
* @param userVipInfo 会员实体类
* @return
*/
@RequestMapping(value= {"/addMember"} ,method = {RequestMethod.POST})
@ResponseBody
public jsonMsg addMemberItem(UserVipInfo userVipInfo) {
Boolean flag = userService.addMember(userVipInfo);
if(flag) {
return jsonMsg.success();
}else {
return jsonMsg.error();
}
}
但是这样传不进来,需要在pojo日期属性上配置@DatetimeFormat注解,代码如下
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date vipbrithday;
这个注解需要配置spring-mvc 添加注解驱动,替我们自动配置了最新的处理器映射器和处理器适配器,也会帮我们自动启用@DatetimeFormat注解
<mvc:annotation-driven />
网上还有很多自定义转换器,由于时间有限,没有进行研究测试,所以用了一个非常轻松的办法解决。
希望以后能学会自定义转换器的方法解决。
上一篇: Python基础 - 20210525 -基础12 类和继承
下一篇: shellshock漏洞利用