/** * 获取指定选项组名称替换model的选项字段值对应的展示值 [基于get/set方法] * * @param model * @param optName 选项组名称 * @param getName 字段get方法 * @param setName 字段set方法 */ public <T> void replaceOptionValue(T model, String optName, String getName, String setName) { try { Method getMethod = model.getClass().getMethod(getName); // 从选项字典查询出指定字典名称, 指定选项值的选项显示名称 String optionValue = getOptionValue(optName, getMethod.invoke(model).toString()); // 如果不是空(也就是根据当前字段值为key, 没找到选项字典对应value), 才替换, 上一次替换将缓存中的user的status已经替换成optionValue, 比如1 : // 启用, 如果缓存还生效, 这次user中的status已经是字符: '启用', 所以会找不到 if (SysUtil.isNotEmpty(optionValue)) { Method setMethod = model.getClass().getMethod(setName, String.class); setMethod.invoke(model, optionValue); } } catch (Exception e) { throw new RuntimeException(e); } }
/** * 获取指定选项组名称替换model的选项字段值对应的展示值 [基于反射] * * @param model * @param optName 选项组名称 * @param fieldName 字段名 */ public <T> void replaceOptionValue(T model, String optName, String fieldName) { try { Field field = model.getClass().getDeclaredField(fieldName); field.setAccessible(true); // 根据选项组名称和字段反射出的选项key查询选项value String optionValue = getOptionValue(optName, (String) field.get(model)); // 如果不是空(也就是根据当前字段值为key, 没找到选项字典对应value), 才替换, 上一次替换将缓存中的user的status已经替换成optionValue, 比如1 : // 启用, 如果缓存还生效, 这次user中的status已经是字符: '启用', 所以会找不到 if (SysUtil.isNotEmpty(optionValue)) { field.set(model, optionValue); } } catch (Exception e) { throw new RuntimeException(e); } }