继续解析WebBaseController代码
@Autowired
protected RedisService redisService;//redis服务
@Autowired
protected JdbcTemplate jdbcTemplate;//jdbc服务
@Autowired
protected HttpService httpService;//Http服务
//下面是用到了Spring的配置文件自动注入的注解
@Value("${upgradeNotifyUrl}")
private String upgradeNotifyUrl;//支付异步通知地址
下面再次出现了@ModelAttribute
上一篇文章已经介绍过@ModelAttribute了地址:BaseController的实现
@ModelAttribute
public void setObject(HttpServletRequest request, HttpServletResponse response) {
// 调用父类参数设置方法
super.setObject(request, response);
}
下面的代码是公司里面这位大佬写的对前端传入参数的提前格式化
@InitBinder
public void initBinder(WebDataBinder binder) {
// date,datetime
binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
public void setAsText(String value) {
if (StringUtils.isEmpty(value)) {
setValue(null);
return;
}
try {
if (value.length() == 10) {
setValue(new SimpleDateFormat("yyyy-MM-dd").parse(value));
} else if (value.length() == 8) {
setValue(new SimpleDateFormat("HH:mm:ss").parse(value));
} else if (value.length() == 16) {
setValue(new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(value));
} else {
setValue(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value));
}
} catch (ParseException e) {
log.error("Can not convert '" + value + "' to java.util.Date", e);
}
}
public String getAsText() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date) getValue());
}
});
// int
binder.registerCustomEditor(Integer.class, new PropertyEditorSupport() {
public void setAsText(String value) {
if (StringUtils.isEmpty(value)) {
setValue(0);
return;
}
setValue(Integer.parseInt(value));
}
public String getAsText() {
return getValue().toString();
}
});
// long
binder.registerCustomEditor(Long.class, new PropertyEditorSupport() {
public void setAsText(String value) {
if (StringUtils.isEmpty(value)) {
setValue(0);
return;
}
setValue(Long.parseLong(value));
}
public String getAsText() {
return getValue().toString();
}
});
// double
binder.registerCustomEditor(Double.class, new PropertyEditorSupport() {
public void setAsText(String value) {
if (StringUtils.isEmpty(value)) {
setValue(0);
return;
}
setValue(Double.parseDouble(value));
}
public String getAsText() {
return getValue().toString();
}
});
}
下面是增加几条说明:
关于InitBinder注解的说明
InitBinder注解的补充说明