当前位置: 首页 > news >正文

Ruoyi5.x RuoYi-Vue-Plus新建Translation翻译类

若依框架(RuoYi)中的Translation翻译类主要作用在于实现字段值的转换或翻译功能,以提高数据展示的准确性和友好性。以下是其具体作用的一些关键点:

字段值转换:若依框架在处理数据时,有时需要将某些字段的存储值(如ID)转换为更具可读性的展示值(如名称、标签等)。Translation翻译类正是为此目的而设计的,它允许定义字段值的转换规则,并在需要时自动执行转换。
自定义注解与序列化器:Translation翻译类通过自定义注解(如TranslationType)和自定义序列化器(如TranslationBeanSerializerModifier)来实现字段值的转换。开发者可以为不同的字段或数据类型定义不同的转换规则,并将这些规则应用于整个系统或特定模块。
内置翻译功能:系统目前内置了几种常用的翻译功能,包括用户ID转账号、部门ID转名称、字典类型转标签等。这些内置功能可以大大简化开发过程,减少重复代码。
分模块设计:若依框架采用分模块设计,使得Translation翻译类可以轻松地集成到系统的各个模块中。无论是前端展示还是后端处理,都可以根据需要调用相应的翻译功能。
易于维护与扩展:由于Translation翻译类采用自定义注解和序列化器的方式实现,因此其代码结构清晰、易于理解和维护。同时,开发者可以根据项目需求轻松地扩展新的翻译功能或修改现有功能。

以系统分类为例进行新的翻译功能添加:

  1. 添加翻译常量:
    在类org.dromara.common.translation.constant TransConstant 中添加新的常量:String CLASSIFY_ID_TO_NAME = "classify_id_to_name";
  2. 新建service接口:
    org.dromara.common.core.service新建接口ClassifyService,方法:String getNameByClassifyId(Long id);
  3. 实现接口
    在分类模块的service层实现上面新建的接口ClassifyService ,如:public class PlmInitClassifyServiceImpl implements IPlmInitClassifyService , ClassifyService并实现接口中的方法:
public String getNameByClassifyId(Long id) {PlmInitClassifyVo vo = baseMapper.selectVoById(id);if (vo != null) {return vo.getClassifyName();}return "";
}
  1. 在包org.dromara.common.translation.core.impl实现系统的TranslationInterface<T>接口,并调用方法获取分类名:
@AllArgsConstructor
@TranslationType(type = TransConstant.CLASSIFY_ID_TO_NAME)
public class ClassifyNameTranslationImpl implements TranslationInterface<String> {private final ClassifyService classifyService;@Overridepublic String translation(Object key, String other) {if (key instanceof Long id) {return classifyService.getNameByClassifyId(id);}return "";}
}
  1. org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中添加第4步新建的类的包名和类名
org.dromara.common.translation.core.impl.ClassifyNameTranslationImpl
  1. 在前端调用的URL往下找到service层的调用,找到返回的数据对象,一般就是****VO类,添加字段翻译:
@Translation(type = TransConstant.CLASSIFY_ID_TO_NAME, mapper = "classifyId")
private String classifyName;
  1. 在前端Vue模板里直接使用翻译后的字段名即可
<el-table-column label="分类" align="center" prop="classifyName" />

在这里插入图片描述

http://www.lryc.cn/news/368580.html

相关文章:

  • 类加载的奥秘
  • Spring知识点总结
  • STM32Cube系列教程11:STM32 AES加解密模块性能测试
  • Vue2基础:.sync修饰符的使用,认识,作用,本质案例演示,实现父子之间的通信。
  • 【数据结构与算法】使用单链表实现队列:原理、步骤与应用
  • DHCP服务
  • C++笔试-剑指offer
  • Mac安装jadx并配置环境
  • 前端学习----css基础语法
  • 超详解——python条件和循环——小白篇
  • DNS协议 | NAT技术 | 代理服务器
  • 深入ES6:解锁 JavaScript 类与继承的高级玩法
  • 领域驱动设计:异常处理
  • 网络网络层之(6)ICMPv6协议
  • 《大道平渊》· 拾壹 —— 商业一定是个故事:讲好故事,员工奋发,顾客买单。
  • JavaScript 如何访问本地文件夹
  • ArrayList顺序表简单实现
  • 144、二叉树的前序递归遍历
  • youtube 1080 分辨率 下载方式
  • 计算机网络ppt和课后题总结(下)
  • 测试基础12:测试用例设计方法-边界值分析
  • AI大模型在健康睡眠监测中的深度融合与实践案例
  • 【西瓜书】9.聚类
  • 使用jemalloc实现信号驱动的程序堆栈信息打印
  • 树的4种遍历
  • 深入探讨5种单例模式
  • SPOOL
  • 挑战绝对不可能:再证有长度不同的射线
  • 【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现
  • MapStruct的用法总结及示例