spring mvc 接受Date类型参数的问题?

// 历史搜索词
@SuppressWarnings("unchecked")
@RequestMapping(value = "/searchHistory")
@ResponseBody
public JSON searchHistory(HttpServletRequest request, HttpSession session,
        String keyword, int page, Date creatTimeSta, Date creatTimeEnd) {

。。。。
}

Date 类型一直是null?

阅读 10.9k
10 个回答

你请求的代码呢? 是否是请求的name和方法参数名不一致。

你是不是前端发请求的时候字段creatTimeSta写成了createTimeSta...

新手上路,请多包涵

你的 Date creatTimeSta 是不是拼错了。。。。。

你可以使用DateTimeFormat指定格式,客户端用字符串传过来,以避免不同的客户端时区/区域不一致,导致无法接收
@DateTimeFormat(pattern = "yyyy-MM-dd") Date creatTimeSta

看看前端那边传过来的参数名是不是一致吧

一般不是用字符串接受的吗

前端怎么写的呢?肯定是前端传值的问题啦

1.检查前后台名称,传值等问题,确定代码是正确的
2.通过使用SpringMVC的@InitBinder,对特殊类型的数据字符串进行相应的格式处理
示例:

 @InitBinder
    protected void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(Date.class, new MyDateEditor());
    }

    private class MyDateEditor extends PropertyEditorSupport {
        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = null;
            try {
                date = format.parse(text);
            } catch (ParseException e) {
                format = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    date = format.parse(text);
                } catch (ParseException e1) {
                }
            }
            setValue(date);
        }
    }
新手上路,请多包涵

看看你的请求是get还是post,有可能是日期被Encode了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题