通过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>