首页 > 其他分享 >关于字典回显-字典

关于字典回显-字典

时间:2023-03-06 18:15:23浏览次数:24  
标签:插件 String 回显 前端 关于 modelAndView 字典

问题背景

在前后端分离开发的场景下,后端状态或者类型这样的数据以阿拉伯数字返回,比如1:通过,2:过期;只能与后端沟通好前端通过数字和中文自己对应并显示。后端如果修改字典前端也需要一起跟着改

解决办法

字典回显插件主要解决上述问题,在返回状态数字时候通过一个注解自动将数字对应的中文标识返回前端

码更加模块化和易于维护。

字典回显插件

 

字典回显插件是一种用于数据字典管理的插件,它能够帮助用户在前端页面上直接显示字典表中对应的文字描述,而不是只显示字典项的代码值。这种插件通常与后端字典表进行集成,可以在前端页面上轻松地将字典表中的代码值转换为对应的文字描述。

字典回显插件的实现方式可以有多种,其中一种常见的方式是将字典表的数据存储在后端数据库中,然后在前端页面上使用JavaScript或Vue等框架编写代码来获取字典表数据,并将其缓存在浏览器端。当用户在前端页面上进行相关操作时,可以直接从缓存中读取字典表数据并将其转换为对应的文字描述,从而实现字典回显的功能。

使用字典回显插件可以大大提高前端页面的可读性和用户体验,使用户更加容易理解和使用系统中的数据。此外,它还可以降低系统开发人员的开发和维护成本,提高系统的可扩展性和可维护性。

遇到问题

package com.sevenme.common.interceptor;

@Component
public class DictInterceptor extends HandlerInterceptorAdapter {
    @Autowired
    private CommonDictService commonDictService;


    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //rest请求modelAndView为空
if (modelAndView != null) { Map<String, Object> model = modelAndView.getModel(); for (Map.Entry<String, Object> entry : model.entrySet()) { Object value = entry.getValue(); if (value instanceof String && ((String) value).contains("{") && ((String) value).contains("}")) { String pattern = "\\{([\\w-]+)\\}"; // 匹配占位符的正则表达式 Pattern r = Pattern.compile(pattern); Matcher m = r.matcher((String) value); StringBuffer sb = new StringBuffer(); while (m.find()) { String dictType = m.group(1); // 获取数据字典类型 Map<String, String> dictMap = dictService.getDictMap(dictType); // 查询数据字典 String dictValue = dictMap.get(m.group()); // 获取对应的数据字典值 if (dictValue == null) { dictValue = m.group(); } m.appendReplacement(sb, dictValue); // 替换占位符 } m.appendTail(sb); entry.setValue(sb.toString()); // 替换原字符串 } } } }
super.postHandle(request, response, handler, modelAndView); } }

由于项目是rest请求方式,modelAndView为空,不能通过修改model。实现回显

尝试用MyBatis-Plus的拦截器

 

 

在intercept方法中,获取到了SQL查询的结果,并判断该结果是否为BaseEntity类的实例。如果是,则遍历该类中所有的属性,并找出其中使用了@Dict注解的属性。对于这些属性,通过反射获取其类型编码和值编码,并调用DictService类中的方法查询出对应的值名称,并将该名称设置回属性中。最后,返回字典回显后的查询结果。

 

标签:插件,String,回显,前端,关于,modelAndView,字典
From: https://www.cnblogs.com/origin-zy/p/17184835.html

相关文章

  • 关于有些下拉框自定义样式未生效问题
    像一些下拉框自定义类名时,在DOM树中是在body下面的,所以加/deep/和important不起作用    也就是说自定义类名有,但是类名上写的样式不起作用解决办法,在全局样式书......
  • 关于WLAN没有有效的ip解决办法
    第一步,win+r打开命令提示符在打开的命令提示符里面输入services.msc在打开的面板中选择以下两个选项并重启在设置里面查看网络恢复情况发送和接受的数据不为0的时候......
  • 关于starter-封装自己的starter
    starter概念在SpringBoot中,Starter是一组预配置的依赖项,旨在使您的应用程序轻松地集成和配置所需的功能。Starter通常包括自动配置类,该类为您的应用程序配置必需的Bean和......
  • JAVA--关于递归
    递归概念: 方法直接或者间接的方式调用自己本身,这样的形式称为递归递归的三要素: 1、要有边界条件,也就是停止递归的条件; 2、有点像循环,需要给一个前进条件,每次......
  • 《鞅与一类关于停时的概率与期望问题》学习笔记
    发现自己学的脑子都没了,重新系统的学(抄)一遍 $1\\$鞅与鞅的停时定理$1.1\$鞅定义$1.1.1.\$随机过程对于每一个参数\(t\inT,\omega\in\Omega\),\(X(......
  • 《渗透测试》 反弹SHELL&不回显带外&正反向连接&防火墙出入站&文件下载day8
    导图 #常规基本渗透命令详解https://blog.csdn.net/weixin_43303273/article/details/83029138 #实用案例1:文件上传下载-解决无图形化&解决数据传输命令生成:https......
  • 关于图书管理系统的改良
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<windows.h>#defineLENsizeof(book)type......
  • 关于vuex
    state:{count:0}//原始形式调用时插值表达式形式<div>{{$store.state.count}}</div>赋值函数形式是在computed中important{mapStatte}from'vuex'computed:{...map......
  • 关于Selenium启动Chrome浏览器闪退问题
    两行代码有时候并不能解决问题option=webdriver.ChromeOptions()option.add_experimental_option(“detach”,True)闪退的原因在保证webdriver版本和浏览器版本一致时,seleniu......
  • 关于hibernate执行sql语句后,进程不关闭的问题
    写了一个简单的测试程序,就是java查询数据库的,后面发现了数据库查询结束后,进程一直不会结束,在调试的时候,发现生成了一个线程,是这个线程不关闭。/****/packagecom.test.my......