1.问题描述
后端实体属性已加上注解,但是在返回时并没有dictText字段生成
/**
* 性别(1:男 2:女)
*/
@Dict(dicCode = "sex")
private Integer sex;
/**
*表名sys_user 会根据username找出realname然后再返回时会有username_dictText字段生成
*这个字段就是realname值
*/
@Dict(dicCode = "username",dictTable="sys_user",dicText="realname")
private String username;
2.发生原因
在DictAspect.java中找到了问题所在
可以看到只有当返回类型为IPage时才会进行字典转换
public void parseDictText(Object result) {
if (result instanceof Result && ((Result)result).getResult() instanceof IPage) {
List<JSONObject> items = new ArrayList();
Object record;
JSONObject item;
label59:
for(Iterator var3 = ((IPage)((Result)result).getResult()).getRecords().iterator(); var3.hasNext(); items = this.makeJSONObject(record, item, (List)items)) {
record = var3.next();
ObjectMapper mapper = new ObjectMapper();
String json = "{}";
try {
json = mapper.writeValueAsString(record);
} catch (JsonProcessingException var20) {
log.error("json解析失败" + var20.getMessage(), var20);
}
item = JSONObject.parseObject(json);
Field[] var8 = record.getClass().getDeclaredFields();
int var9 = var8.length;
for(int var10 = 0; var10 < var9; ++var10) {
Field fld = var8[var10];
if ("children".equals(fld.getName())) {
List<JSONObject> childrenItems = new ArrayList();
try {
Iterable children = (Iterable)record.getClass().getMethod("getChildren").invoke(record);
if (children == null) {
break;
}
Iterator var14 = children.iterator();
while(true) {
if (!var14.hasNext()) {
continue label59;
}
Object childrenRecord = var14.next();
ObjectMapper childrenMapper = new ObjectMapper();
String childrenJson = "{}";
try {
childrenJson = childrenMapper.writeValueAsString(childrenRecord);
} catch (JsonProcessingException var19) {
log.error("json解析失败" + var19.getMessage(), var19);
}
JSONObject childrenItem = JSONObject.parseObject(childrenJson);
childrenItems = this.makeJSONObject(childrenRecord, childrenItem, (List)childrenItems);
item.replace("children", childrenItems);
}
} catch (Exception var21) {
log.error(var21.getMessage());
break;
}
}
}
}
((IPage)((Result)result).getResult()).setRecords((List)items);
}
}
3.解决方法
// 定义一个map
Map<String, Object> map = new HashMap<>();
User user = new User();
map.put("@transFields@", Arrays.asList("user"));// 把所需要的返回值跟key关联 Arrays.asList("user")
map.put("user",user); // 在把user的实体类放入
return Result.ok(map);