330 Star 3.1K Fork 560

GVPnoear / solon

 / 详情

新增 ConverterFactory 接口

已完成
拥有者
创建于  
2023-10-16 09:51

目前发现,普通 http 请求时,结构化的举枚处理仍不太方便。引用 ConverterFactory 可解决此问题:

示例:

@Component
public class StringToEnumConverterFactory implements ConverterFactory<String, Enum> {
    @Override
    public <T extends Enum> Converter<String, T> getConverter(Class<T> targetType) {
        return new EnumTypeConverter(targetType);
    }

    public static class EnumTypeConverter<T extends Enum> implements Converter<String, T> {
        private EnumWrap enumWrap;
        public EnumTypeConverter(Class<T> targetType){
            this.enumWrap = new EnumWrap(targetType);
        }
        @Override
        public T convert(String value) throws ConvertException {
            Enum value2 = enumWrap.getCustom(value);
            if(value2 != null){
                return (T)value2;
            }
            return (T)enumWrap.get(value);
        }
    }
}

应用效果:

@Controller
public class DemoController {
    @Mapping("demo")
    public String demo(DemoType cat) {
        return cat.title;
    }
}

public enum DemoType {
    Demo1(1, "demo1"),
    Demo2(2, "demo2");
    
    @Use //表示使用此字段(只是示例,具体可与 json 框架的注解连动)
    public int code;
    public String title;

    DemoType(int code, String title) {
        this.code = code;
        this.title = title;
    }
}

评论 (0)

西东 创建了任务
西东 修改了描述
西东 任务状态待办的 修改为已完成
展开全部操作日志

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
15535 noear admin 1683858335
Java
1
https://gitee.com/noear/solon.git
git@gitee.com:noear/solon.git
noear
solon
solon

搜索帮助