为了账号安全,请及时绑定邮箱和手机立即绑定

【Spring】自定义类型转换器

标签:
Spring

状态的枚举类

public enum State implements IEnum{

    enabled(0,"正常"),
    disabled(1,"已注销"),
    risk(2,"风险")
    ;    private final Integer value;    private final String display;

    State( Integer value, String display) {        this.value = value;        this.display = display;
    }    @Override
    public String getByName() {        return name();
    }
}

现在我希望当前端通过如下接口传递"test/state?state=enabled"参数的时候,可以获取到状态对应的枚举

    @RequestMapping("test/state")    public String testEnum(State state){           //todo
          return "";
    }

那么我们需要做做如下代码实现

public class StringToEnumConverterFactory implements ConverterFactory<String, IEnum> {    @Override
    public <T extends IEnum> Converter<String, T> getConverter(Class<T> aClass) {        return new StringToEnumConverter<>(aClass);
    }    //将字符串转换成枚举来
    private final class StringToEnumConverter<T extends IEnum> implements Converter<String, T> {        private Class<T> enumType;        public StringToEnumConverter(Class<T> enumType) {            this.enumType = enumType;
        }        @Override
        public T convert(String s) {            for (T t : enumType.getEnumConstants()) {                if (t.getByName().equals(s)) {                    return t;
                }
            }            return null;
        }
    }
}

同时把这个处理器注册到Spring的容器中即可

@Configurationpublic class WebAppConfigurer implements WebMvcConfigurer {    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverterFactory(new StringToEnumConverterFactory());
    }
}



作者:eejron
链接:https://www.jianshu.com/p/5b830bd6b164


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
233
获赞与收藏
1008

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消