通过code去获取他的枚举

通过code去获取他的枚举

在运行页面的时候发现,页面的订单状态和支付状态显示的是数字符号,我们要让他显示为文字。

解决方案:

1.在模板中进行判断,我们不采取这种方式

2.在OrderStatusEnum(订单状态)和PayStatusEnum(支付状态)中设置遍历

//订单状态
public static OrderStatusEnum getOrderStatusEnum(Integer code){
    //values获取枚举所有内容
    for(OrderStatusEnum orderStatusEnum:OrderStatusEnum.values()){
        if(OrderStatusEnum.getCode.equals(code)){
            return orderStatusEnum
        }
    }
    return null
}

//支付状态
public static PayStatusEnum getCode(Integer code){
    for (PayStatusEnum payStatusEnum : PayStatusEnum.values()){
        if (payStatusEnum.getCode().equals(code)){
            return payStatusEnum;
        }
    }
    return null;
}

3.自己封装通用的工具类(建议使用)

//1.创建接口
public interface CodeEnum<T> {
    T getCode();
}


//2.在OrderStatusEnum和PayStatusEnum中引用该接口


//3.创建枚举工具类
public class EnumUtil {
    /**
     * getEnumConstants此方法返回一个数组,该数组包含由此Class对象按其声明的顺序表示的枚举类的值,
     * 如果此Class对象不表示枚举类型,则返回null。
     * @param code
     * @param enumClass
     * @param <T>
     * @return
     */
    public static <T extends CodeEnum> T getByCode(Integer code,Class<T> enumClass){
        for (T each:enumClass.getEnumConstants()){
            if(code.equals(each.getCode())){
                return each;
            }
        }
        return null;
    }
}


//4.然后在OrderDTO中加入新的属性
//加入注解JsonIgnore,当对象转换成JSON格式,将该属性忽略
@JsonIgnore
public OrderStatusEnum getOrderStatusEnum(){
    return EnumUtil.getByCode(orderStatus,OrderStatusEnum.class);
}
@JsonIgnore
public PayStatusEnum getPayStatusEnum(){
    return EnumUtil.getByCode(payStatus,PayStatusEnum.class);
}



//5.修改list.ftl中的代码,运行即可
<td>${orderDTO.getOrderStatusEnum().message}</td>
<td>${orderDTO.getPayStatusEnum().message}</td>

posted @ 2021-03-10 10:38  Godwin_Zhang  阅读(754)  评论(0编辑  收藏  举报