一.找到字典切面类(DictAspect)
二.改造方法(parseDictText)
三.修改后的parseDictText方法,支持IPage、List、Object

private void parseDictText(Object result) {if (result instanceof Result) {List<Object> list = new LinkedList<>();if (((Result) result).getResult() instanceof IPage) {//分页list = ((IPage) ((Result) result).getResult()).getRecords();} else if (((Result) result).getResult() instanceof List) {//List集合list = (List<Object>) ((Result) result).getResult();}else{//单对象Object record = ((Result) result).getResult();//判断能否转换成JSON,因为有些结果集返回的是String类型,导致翻译异常,因此判断是否可以转换jsonif(checkIsJsonStr(record)){//字典翻译record =  this.dictEscape(record);}((Result) result).setResult(record);}if(list != null && list.size() > 0){List<Object> items = new ArrayList<>();for(Object record : list){if(checkIsJsonStr(record)){//字典翻译record =  this.dictEscape(record);}items.add(record);}if (((Result) result).getResult() instanceof IPage) {((IPage) ((Result) result).getResult()).setRecords(items);} else if (((Result) result).getResult() instanceof List) {((Result) result).setResult(items);}}}}

四.提取公共代码作为单独的方法进行翻译

/*** 字典翻译* @param record* @return*/private JSONObject dictEscape(Object record){ObjectMapper mapper = new ObjectMapper();String json = "{}";JSONObject item = null;try {//解决@JsonFormat注解解析不了的问题详见SysAnnouncement类的@JsonFormatjson = mapper.writeValueAsString(record);//对象序列化为JSON字符串} catch (JsonProcessingException e) {log.error("json解析失败" + e.getMessage(), e);}try {item = JSONObject.parseObject(json);//update-begin--Author:scott -- Date:20190603 ----for:解决继承实体字段无法翻译问题------for (Field field : oConvertUtils.getAllFields(record)) {//update-end--Author:scott  -- Date:20190603 ----for:解决继承实体字段无法翻译问题------if (field.getAnnotation(Dict.class) != null) {String code = field.getAnnotation(Dict.class).dicCode();String text = field.getAnnotation(Dict.class).dicText();String table = field.getAnnotation(Dict.class).dictTable();String key = String.valueOf(item.get(field.getName()));//翻译字典值对应的txtString textValue = key;//非中文时翻译if(!checkCountName(key)){textValue = translateDictValue(code, text, table, key);}log.debug(" 字典Val : " + textValue);log.debug(" __翻译字典字段__ " + field.getName() + CommonConstant.DICT_TEXT_SUFFIX + ": " + textValue);item.put(field.getName() + CommonConstant.DICT_TEXT_SUFFIX, textValue);}//date类型默认转换string格式化日期if (field.getType().getName().equals("java.util.Date") && field.getAnnotation(JsonFormat.class) == null && item.get(field.getName()) != null) {SimpleDateFormat aDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");item.put(field.getName(), aDate.format(new Date((Long) item.get(field.getName()))));}}}catch (Exception e){log.info("字典翻译异常:"+e.getMessage(),e);}return item;}

五.增加中文检测方法

/*** 检测是否是中文* @param countName* @return*/public static boolean checkCountName(String countName){Pattern p = Pattern.compile("[\u4e00-\u9fa5]");Matcher m = p.matcher(countName);if (m.find()) {return true;}return false;}

六.增加检测是否可转换为JSON字符串方法

/*** 检测是否可转换为JSON字符串* @param record* @return*/public static boolean checkIsJsonStr(Object record){boolean jsonFlag = false;try {String json = new ObjectMapper().writeValueAsString(record);if(json.startsWith("{")) {jsonFlag = true;}} catch (JsonProcessingException e) {e.printStackTrace();}return jsonFlag;}

Jeecg-boot字典翻译改造相关推荐

  1. jeecg-boot字典翻译改造(支持实体类详情查询自动翻译)

    找到字典切面类(DictAspect) 改造方法(parseDictText) 支持自动生成的列表接口/单个实体类查询翻译 代码如下: private void parseDictText(Objec ...

  2. JAVA学习笔记JEECG BOOT介绍

    JEECG JEECG BOOT 低代码开发平台(前后端分离版本) 当前最新版本: 3.1.0(发布日期:2022-03-01) AUR GitHub stars GitHub forks 项目介绍: ...

  3. [零代码工具推荐] 快速建站神器 Jeecg/Boot

    项目介绍 JeecgBoot 是一款基于代码生成器的低代码开发平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue,Mybatis-plus, ...

  4. 【jeecg boot】【PowerDesigner】使用PD创建数据库,并使用jeecg生成代码来创建一个干部任命表单

    首先看一下需要完成的功能 不难发现,我们需要在数据库中设计两张表,分别是干部表和干部家属表,干部表和干部家属是一对多的关系 Power Designer部分 1. 打开Power Designer,点 ...

  5. 字典翻译EasyTrans简单使用分享

    前言 最近太忙了,一直按在项目上摩擦,都没有时间写分享了.今天终于市把所有负责的模块都写完了,本次迭代引入了字典翻译,借这个机会顺便分享下. 一.什么是字典翻译 所谓的字典翻译其实简单理解就是一些不常 ...

  6. Element UI 实现字典翻译

    小白记录下element ui的学习过程. 这样的一个页面,需要将所有控件的label名称包括table的表头,都改成可根据字典翻译的 这是原本的写法 首先,需要从数据库中将字典的对象查出来 在页面渲 ...

  7. java 数据字典翻译_BeanUtils——JavaBean相互转换及字典翻译

    翻译JavaBean中带有@CacheFormat的属性/** * 翻译当前类中需要翻译的字典值 * * @param source 待翻译的对象 */ public static  void dat ...

  8. springboot 字典翻译

    springboot 字典翻译 一.基于注解和jackson序列化实现字典翻译 二. 基于注解和aop实现字典翻译 本文主要介绍两种在项目中用到的字典翻译方式: 一.基于注解和jackson序列化实现 ...

  9. java字典初始化_字典翻译注解讲解

    原理 使用拦截器,初始化时加载缓存到,使用时判断注解,根据注解解析缓存类,并用正则表达式,翻译后重写json数据,直到返回结果 使用 系统启动时,初始化查询字典,将字典缓存到redis中格式为 /** ...

最新文章

  1. 防抖 节流_面试必备考点:防抖与节流
  2. 时间轴的实现(简单到爆炸)
  3. visual studio支持python吗_微软 Visual Studio Online 更新,更好地支持 Python 语言和 Docker...
  4. 计算机系统注册表的由来,计算机系统注册表
  5. Elasticsearch基本操作 1:ES 基本操作、批处理
  6. Codeforces Round #190 (Div. 1): E. Ciel and Gondolas(决策单调性DP+wqs二分)
  7. 【转】大厦将倾,互联网将如何变革传统行业(下)
  8. Atitit 提升开发效率法 fx t35 Atitit 提升开发效率法---开发方法架构简化法.docx 目录 1. 主要几个层次上简化开发 1 1.1. ,开发体系方法使用简单方法 1 1.2.
  9. 第三章 python流程控制
  10. Weld(CDI)教程
  11. XCAP发包工具的使用
  12. python贴吧爬虫-python贴吧爬虫
  13. python利用pil 制作透明图片水印
  14. c语言进行catia二次开发,想入门CATIA二次开发CAA的盆友们(谈谈开发经验,或许对你有帮助)...
  15. MeterSphere案例分享丨88完美邮箱全面提升产品质量的落地指南
  16. 哪个版本的linux适合个人主机,2020年适合个人使用的Linux发行版推荐TOP5
  17. HOS Develop Notes-开启ssh服务
  18. 强大免费的在线格式转换工具,三步轻松完成。
  19. 【xml 报错】xml编译错误
  20. 贾跃亭回应传闻:乐视的成功不是靠政府关系

热门文章

  1. Java算法-滑动窗口算法(Sliding Window)(十)
  2. 2021/10/26写着玩的
  3. Redis(三)——string类型数据库操作
  4. CentOS 7 防火墙设置及配置
  5. Vim:如何退出Vim编辑器?
  6. 移动通信网络与优化(1)
  7. SUSE下给SQLPLUS增加历史命令功能
  8. IT信息技术企业可以做哪些认证?
  9. IDEA同一窗口打开多个项目
  10. python os模块打开文件_python OS 模块 文件目录操作