WebBaseController

继续解析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注解的补充说明

你可能感兴趣的:(WebBaseController)