前端获取所有枚举值

        在实际项目中,有很多用到枚举的地方,比如状态 类别等,很多时候在列表查询的时候,这些状态都是作为查询条件的,所以就需要前端老哥发请求到后台来查询枚举值,这里需要注意了,一般情况下,别让前端老哥写死了,这是很不科学的,要是啥时候状态枚举一改变,前端忘记改了,那你就等着凉凉吧

其实查询很简单:

1.写一个公共接口给前端老哥

@RestController
@RequestMapping("/enum/")
@Api(value = "枚举", tags = "系统枚举")
public class EnumController {
    @GetMapping("list")
    public ReplyJsonUtil getEnumList(@Param("name") String name) {
        try {
            String[] names = name.split(",");
            Map<String, List<Object>> maps = new HashMap<>();
            for (String nm : names) {
                String enumPackage = "com.dph.finance.enums";
                Class<Enum> clazz = (Class<Enum>) Class.forName(enumPackage + "." + nm);
                Enum[] objs = clazz.getEnumConstants();
                List<Object> ls = new ArrayList<>();
                for (Enum obj : objs) {
                    ls.add(obj);
                }
                maps.put(nm, ls);
            }
            return ReplyJsonUtil.success("枚举解析成功", maps);
        } catch (Exception e) {
            return ReplyJsonUtil.fail("枚举解析失败");
        }
    }
}

注意 枚举一般都是放在统一的位置,所以我这里可以这样写,如果你的不一样,就随机应变 代码也很简单 我就不过多解释了

这样前端老哥想要知道哪几个枚举的所有值,我只需要把枚举值名称给他,他就直接把名称带着来后台查询就好了,多个枚举的话以逗号隔开就ok了,然后注意你的枚举一定要有get方法

1.枚举没加get方法,并且没有实例化,

//没有get方法和序列化的枚举
public enum ApplicationPurchseOrderStatus {
    UNCHECKED("unchecked", "待审核"),
    STORECHECK("storecheck", "囤货审核"),
    LENDING("lending", "放款中"),
    UNSHIPPED("unshipped", "待发货"),
    UNRECEIVED("unreceived", "待收货"),
    FINISHED("finished", "已完成"),
    INVALID("invalid", "已作废");
}

返回结果

只返回了枚举值,code和message都没有返回.

2.加了get方法并且序列化

@Getter
public enum PeriodLoanBillEnum implements BaseEnum{

    WAIT_REPAY("WAIT_REPAY", "待还款"),
 
    PARTIAL_REPAY("PARTIAL_REPAY", "部分还款中"),

    ALL_REPAY("ALL_REPAY", "全额还款中"),

    PARTIAL_SETTLED("PARTIAL_SETTLED", "部分结清"),

    ALREADY_SETTLED("ALREADY_SETTLED", "已结清"),

    NOT_SETTLED("NOT_SETTLED", "未结清"),
    ;

    /**
     * 枚举值码
     */
    private final String code;

    /**
     * 枚举描述
     */
    private final String message;
}

BaseEnum

@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public interface BaseEnum {
}

@JsonFormat就可以实现对枚举值以对象的方式进行序列化 你可以把枚举的每个枚举值看做是一个对象,因为每个枚举值都有code和message属性 再为其code和message属性添加get方法 就可以了

返回结果:

这样前端就可以得到这个枚举里面的所有枚举值了.

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值