欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用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 />

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