java后台怎么接收枚举,后台的枚举,几乎都要交代前端做下拉或者渲染;那就优雅的让枚举自动变成接口吧(怎样获取包名下所有的类/所有的枚举)...

本文介绍了如何在Java后台利用反射将枚举转换为前端友好的数据格式,通过一个通用接口提供枚举数据。此外,文章还展示了如何通过包扫描自动获取所有枚举类,避免手动配置,提高了开发效率。
摘要由CSDN通过智能技术生成

背景

B/S架构项目,前后端分离开发,往往有很多枚举需要交代给前端做成下拉或者渲染

前端写死的弊端很多,比如失误造成的键、值错误,修改时要前后端都改等

为每个枚举写个接口,会好很多,但重复工作太多了,还是很蠢。

思路

前端做下拉或者渲染所需的源数据,可以全部调用同一个接口,形如:

@GetMapping("enum/{className}")

后端写好枚举后,把枚举的类名告诉前端,就可以了

实现

把枚举转为前端可用的源数据

一段很简单的反射代码,就可以把枚举变成List>这样的对象了:

List> getEnumByClassName(String className) {

List> list = new ArrayList<>();

// 1.得到枚举类对象

Class clz = optionalEnumMap.get(className);

Object[] objects = clz.getEnumConstants();

if (objects != null && objects.length != 0) {

Method[] methods = clz.getMethods();

for (Object obj : objects) {

Map map = new HashMap<>();

if (methods.length != 0) {

for (Method method : methods) {

String name = method.getName();

if ("getClass".equals(name) || "getDeclaringClass".equals(name)) {

continue;

}

if (name.startsWith("get")) {

try {

map.put(name.substring(3, 4).toLowerCase() + name.substring(4), method.invoke(obj));

} catch (IllegalAccessException

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值