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

Spring Boot 通过全局配置去除字符串类型参数的前后空格

1、问题

避免前端输入的字符串参数两端包含空格,通过统一处理的方式,trim掉空格

2、实现方式

/**
 * 去除字符串类型参数的前后空格
 * @author yanlei
 * @since 2022-06-14
 */
@Configuration
@AutoConfigureAfter(WebMvcAutoConfiguration.class)
public class StringParamTrimConfig {
    @ControllerAdvice
    public static class ControllerStringParamTrimConfig {
        /**
         * url和form表单中的参数trim
         */
        @InitBinder
        public void initBinder(WebDataBinder binder) {
            // 构造方法中boolean参数含义为如果是空白字符串,是否转换为null
            // 即如果为true,那么 "" 会被转换为null,否则为 ""
            StringTrimmerEditor stringTrimmerEditor = new StringTrimmerEditor(false);
            binder.registerCustomEditor(String.class, stringTrimmerEditor);
        }
    }

    /**
     * Request Body中JSON或XML对象参数trim
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return jacksonObjectMapperBuilder ->
                jacksonObjectMapperBuilder
                       .deserializerByType(String.class, new StdScalarDeserializer<String>(String.class) {
                            @Override
                            public String deserialize(JsonParser jsonParser, DeserializationContext ctx) throws IOException {
                                return StringUtils.trimWhitespace(jsonParser.getValueAsString());
                            }
                        });
    }
}

说明:
@AutoConfigureAfter(WebMvcAutoConfiguration.class) : 表示该配置类在 WebMvcAutoConfiguration (Spring MVC 的自动配置类 )之后进行配置,确保在 Spring MVC 相关配置完成后再进行字符串参数处理配置,防止因依赖问题导致配置失效。

@ControllerAdvice :对所有控制器提供通用功能,@ControllerAdvice 可以与其他注解如 @ExceptionHandler、@ModelAttribute、@InitBinder 等一起使用,处理异常、共享模型数据、进行数据绑定等。这里用于统一处理字符串参数的操作。可参考https://blog.csdn.net/weixin_44594317/article/details/144723619

@InitBinder 注解的 initBinder 方法

  • WebDataBinder 是 Spring MVC 用于数据绑定的核心类,负责将请求参数绑定到 Java 对象。
  • StringTrimmerEditor 是自定义的属性编辑器,构造函数参数 false 表示当字符串为空白时,不将其转换为 null ,而是保留空字符串。
  • binder.registerCustomEditor(String.class, stringTrimmerEditor) 这行代码将自定义的 StringTrimmerEditor 注册到 WebDataBinder 中,作用是在将请求参数绑定到 Java 对象时,对所有 String 类型参数自动去除前后空格 。

相关文章:

  • 遵循IEC62304YY/T0664:确保医疗器械软件生命周期合规性
  • 【Hadoop入门】Hadoop生态之MapReduce简介
  • 25.4.8学习总结
  • 自定义实现C++拓展pytorch功能
  • 无标记点动作捕捉方案:偃动坊无标记动作捕捉系统,解锁无穿戴动捕体验
  • 浅谈类的复制构造函数和赋值运算符
  • 今日行情明日机会——20250408
  • Java 设计模式:工厂模式详解
  • 前端实现docx格式word文件预览,可以兼容原生、vue2、以及uni-app 项目,详细步骤。
  • 3月AI论文精选十篇
  • 遍历集合list工具
  • C++学习day8
  • AI-人工智能-基于LC-MS/MS分子网络深度分析的天然产物成分解析的新策略
  • LeetCode541反转字符串②
  • 最简CNN based RNN源码
  • Vue.js 中 v-model 的使用及其原理
  • 注意力机制 Attention
  • 第九章:前沿 RAG 技术探索
  • 数字内容体验驱动用户参与增效
  • 图像模糊(蓝桥杯真题)
  • 大风暴雨致湖南岳阳县6户房屋倒塌、100多户受损
  • “救护车”转运病人半路加价,从宝鸡到西安往返都要多收钱
  • 美联储主席:关税“远超预期”,美联储实现目标的进程或被推迟至明年
  • 联想发布超级智能体矩阵,杨元庆:美国关税影响反映在产品定价上,未来不确定性很大
  • 4月深圳新房、二手房成交同比均上涨,“5月有望延续积极向好的发展态势”
  • 潘功胜发布会答问五大要点:除了降准降息,这些政策“含金量”也很高