SpringMVC InitBinder registerCustomEditor 日期转换


	// @InitBinder // 不指定时,表示全局
	@InitBinder({"a"}) // @InitBinder("a") 对应@RequestParam
	protected void testInitBinder(WebDataBinder binder) {
		// 不指定字段,表示方法内所有Date类型字段格式化
		binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));
	}

    // @RequestParam Map requestParams  获取所有请求参数
	@ResponseBody
	@RequestMapping("/getTime")
	public String getTime(@RequestParam("a") Date time) {
		return time + "";
	}


	@InitBinder({"b"}) // @InitBinder("b") 表示该方法是处理 Controller 中 @ModelAttribute("b") 对应的参数
	protected void initBinder(WebDataBinder binder) {
		// binder.setFieldDefaultPrefix("b."); // 解决多个对象不知道key属于哪个对象是使用,例前端参数名:b.name

		// 不指定字段,表示方法内所有Date类型字段格式化
		// binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));

		// 指定字段,指定的Date类型字段格式化
		// binder.registerCustomEditor(Date.class, "time", new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
		// binder.registerCustomEditor(Date.class, "time2", new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));

		// 重新处理(动态格式)
		binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
			@Override
			public void setAsText(String text) throws IllegalArgumentException {
				try {
					if (StringUtils.isBlank(text)) { setValue(null); return; }
					String format = null; // 格式
					if (text.indexOf(":") == -1) // 日期处理
						format = "yyyy-MM-dd";
					else // 时间处理(动态格式)
						if (text.split(":").length == 2) 
							format = "yyyy-MM-dd HH:mm";
						else if (text.split(":").length == 3)
							format = "yyyy-MM-dd HH:mm:ss";

					setValue(new SimpleDateFormat(format).parse(text));
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	@ResponseBody
	@RequestMapping(value="/findVo")
	public Object testVo(@ModelAttribute("b") TestVo testVo){
		return JSONSerializer.toJSON(testVo).toString();
	}

 

你可能感兴趣的:(Java,SpringMVC)