使用ajax请求提交数据时,日期类型无法转换为JAVA中的日期类型

来源:互联网 发布:android 知乎源码 编辑:程序博客网 时间:2024/06/04 00:47

在做毕业项目时碰见日期类型无法传到后台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 />

网上还有很多自定义转换器,由于时间有限,没有进行研究测试,所以用了一个非常轻松的办法解决。
希望以后能学会自定义转换器的方法解决。

阅读全文
0 0