当前位置: 首页 > 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" />

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2002NOIP普及组真题 3. 产生数
  • cefsharp124.x升级125.x(cef125.0.21/Chromium 125.0.6422.142)
  • LeetCode-day08-881. 救生艇
  • centos使用docker快速安装nginx
  • Day 25 二叉树的终止
  • kafka如何保证消息不丢失
  • GAT1399协议分析(7)--pycharm anaconde3 配置pyside2
  • 转让北京劳务分包地基基础施工资质条件和流程
  • Vue3 组合式 API:依赖注入(四)
  • bash、zsh、fish三种流行Unix shell的区别
  • Linux 进程控制
  • 为什么选择Python作为AI开发语言
  • Kimichat使用案例010:快速识别出图片中的表格保存到Excel
  • 重邮计算机网络803-(2)物理层
  • AI大模型在健康睡眠监测中的深度融合与实践案例
  • css选择器
  • Java超时控制的实现
  • js算法-归并排序(merge_sort)
  • magento 货币换算
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • nfs客户端进程变D,延伸linux的lock
  • vue脚手架vue-cli
  • windows下如何用phpstorm同步测试服务器
  • 闭包,sync使用细节
  • 测试开发系类之接口自动化测试
  • 读懂package.json -- 依赖管理
  • 分布式任务队列Celery
  • 基于游标的分页接口实现
  • 小程序 setData 学问多
  • 在weex里面使用chart图表
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​queue --- 一个同步的队列类​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #数学建模# 线性规划问题的Matlab求解
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (void) (_x == _y)的作用
  • (二十三)Flask之高频面试点
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (四)模仿学习-完成后台管理页面查询
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (原)本想说脏话,奈何已放下
  • (转)jdk与jre的区别
  • .a文件和.so文件
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • /etc/sudoer文件配置简析
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @ResponseBody
  • @synthesize和@dynamic分别有什么作用?
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [CISCN 2023 初赛]go_session
  • [CSS] - 修正IE6不支持position:fixed的bug