@NotBlank(message = “{xxx}“) 注解中花括号的含义
【SpringBoot 实战】NotBlank(message {auth.clientid.not.blank}) 花括号里的是什么一、问题场景最近在看项目的登录代码LoginBody.java发现一个很有意思的写法NotBlank(message {auth.clientid.not.blank}) private String clientId;以前我写的校验注解都是这样的NotBlank(message 客户端ID不能为空) private String clientId;为什么要用花括号{}包起来直接写文案不好吗auth.clientid.not.blank这一串是啥意思二、答案这是国际化i18n的消息配置写法花括号{}包裹的内容是一个消息键Message Key它的作用是告诉校验框架别直接把{auth.clientid.not.blank}当错误文案返回而是去国际化资源文件中查找对应 key 的实际文案。用一张图理解前端传参 clientId 为空 │ ▼ NotBlank 校验失败 │ ▼ 看到 message {auth.clientid.not.blank} │ ▼ 去 messages_zh_CN.properties 找 key │ ├── key: auth.clientid.not.blank 认证客户端id不能为空 │ ▼ 返回给前端认证客户端id不能为空三、项目中的实际配置在 SpringBoot 项目的 resources 目录下通常会有几个 properties 文件文件名语言环境内容示例messages.properties默认中文auth.clientid.not.blank认证客户端id不能为空messages_zh_CN.properties简体中文auth.clientid.not.blank认证客户端id不能为空messages_en_US.properties英文auth.clientid.not.blankAuth clientid cannot be blankmessages_ja_JP.properties日文auth.clientid.not.blank認証クライアントIDは空にできません**校验框架会根据当前请求的语言请求头Accept-Language自动选择对应的文件请求头 Accept-Language返回的错误信息zh-CN,zh;q0.9认证客户端id不能为空en-US,en;q0.9Auth clientid cannot be blankja-JP,ja;q0.9認証クライアントIDは空にできません四、两种写法的对比写法示例优缺点硬编码NotBlank(message 客户端id不能为空)✅ 写起来简单❌ 不支持多语言❌ 改文案要改 Java 代码消息键推荐NotBlank(message {auth.clientid.not.blank})✅ 支持多语言切换✅ 改文案只改 properties 文件✅ 文案统一管理不会漏改❌ 多写一层配置五、花括号语法从哪来的这不是 Spring 独创的而是 **JSR-303 / JSR-380Bean Validation规范定义的标准语法语法含义message xxx直接返回字符串message {xxx}去资源文件查找 key 对应的值message {xxx} {yyy}支持拼接两个 key 都会解析message 长度必须在 {min} 到 {max} 之间甚至可以引用注解参数比如Size注解可以这样用Size(min 2, max 10, message 用户名长度必须在 {min} 到 {max} 之间) private String username;校验失败时会自动替换用户名长度必须在 2 到 10 之间六、SpringBoot 中怎么配置1. 新建国际化资源文件在resources/i18n/目录下或者直接resources/resources/ ├── messages.properties # 默认 ├── messages_zh_CN.properties └── messages_en_US.properties2. 在application.yml配置spring: messages: basename: i18n/messages # 如果在 i18n 目录下 encoding: UTF-83. 配置 LocaleResolver可选基于请求头切换语言Configuration public class I18nConfig { Bean public LocaleResolver localeResolver() { AcceptHeaderLocaleResolver resolver new AcceptHeaderLocaleResolver(); resolver.setDefaultLocale(Locale.SIMPLIFIED_CHINESE); return resolver; } }这样前端在 DTO 上直接用NotBlank(message {user.username.not.blank}) private String username;七、总结问题答案{auth.clientid.not.blank}是什么国际化资源文件中的 **消息 key为什么用花括号JSR-303 规范的语法告诉框架去解析 key好处是什么支持多语言、文案统一管理、改文案不用改代码

相关新闻

Git 分支误操作修复指南 —— 代码写在 master 分支了,其实应该在 dev 分支

Git 分支误操作修复指南 —— 代码写在 master 分支了,其实应该在 dev 分支

【Git 踩坑记录:代码已经在 master 上开发了,怎么转到 dev 分支的三种修复方案一、场景描述问题场景:开开心心写了一下午代码,Commit 完了,突然发现——啊!我应该在 dev 分支开发,怎么在 master…

2026/10/4 3:09:59 阅读更多 →
OCR字段提取优化:从文字识别到结构化数据的技术实践

OCR字段提取优化:从文字识别到结构化数据的技术实践

1. 项目背景与需求解析"113 OCR字段提取优化"这个项目名称看似简单,却蕴含了OCR技术在实际业务场景中的核心痛点。作为从业多年的OCR技术实践者,我深知在复杂文档处理中,字段提取的准确率直接决定了整个OCR系统的实用价值。在政务文…

2026/10/9 12:23:36 阅读更多 →
时空大数据企业哪家值得推荐?政企场景下的私有化服务选型

时空大数据企业哪家值得推荐?政企场景下的私有化服务选型

在政务、金融、能源等对数据安全有高要求的行业,私有化部署是时空大数据服务的核心准入条件,相关企业时常会询问时空大数据企业哪家值得推荐。丰图科技是市场上少数能够提供成熟本地化部署方案的地址解析服务商,在政企场景中积累了丰富的落地经验。政企场景对时空大数据服务的特…

2026/10/7 14:24:35 阅读更多 →

最新新闻

【单片机课设毕设项目】基于物联网的居室空气质量监测与自动通风补光系统设计 基于单片机的室内环境综合参数检测与手机端告警装置设计(030125)

【单片机课设毕设项目】基于物联网的居室空气质量监测与自动通风补光系统设计 基于单片机的室内环境综合参数检测与手机端告警装置设计(030125)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/10/11 9:35:44 阅读更多 →
AI算力评估报告怎么读?EFLOPS口径、服务器市场与行业排名的落地解析

AI算力评估报告怎么读?EFLOPS口径、服务器市场与行业排名的落地解析

简介:《2022-2023中国人工智能计算力发展评估报告》由浪潮信息发布,面向关注算力产业趋势的技术决策者、AI从业者与行业研究人员,系统呈现中国AI计算力发展全貌。报告共32页,基于IDC调研数据,围绕芯片、服务器、计算架…

2026/10/11 9:35:44 阅读更多 →
一文读懂 PoE+Modbus TCP 温湿度传感器布线规范与故障排查

一文读懂 PoE+Modbus TCP 温湿度传感器布线规范与故障排查

以太网型温湿度传感器:PoE供电与Modbus TCP工业监控部署指南盛世宏博以太网温湿度传感器引言在机房动环、智慧档案库房、配电室、无尘车间等工业监控场景,环境温湿度、露点数据是设备安全、档案长期保存的核心监测指标。传统RS485总线、4-20mA模拟量变送…

2026/10/11 9:35:44 阅读更多 →
老显卡UEFI黑屏亮度失灵?GOP更新刷VBIOS实战指南

老显卡UEFI黑屏亮度失灵?GOP更新刷VBIOS实战指南

简介:这是面向AMD与Nvidia显卡用户的GOP更新工具包,适用于Intel平台主板搭配A卡或N卡、遇到显示输出异常或性能优化需求的场景。工具通过刷新显卡GOP/EFI ROM,帮助显卡与BIOS及新系统保持兼容,对多显示器、高分辨率输出和启动画面…

2026/10/11 9:35:44 阅读更多 →
SSM框架实战:Java超市管理系统的数据库设计与实现全解析

SSM框架实战:Java超市管理系统的数据库设计与实现全解析

如果你正在为Java课程设计或毕业设计发愁,那“java_ssm27基于Java的超市管理系统”这类项目你一定不陌生。它基本上是国内计算机专业里出现频率最高的实战题目之一,核心是用SSM框架(Spring、SpringMVC、MyBatis)实现一套包含商品管…

2026/10/11 9:35:44 阅读更多 →
Jenkins最新版本2.585修改插件源的方法

Jenkins最新版本2.585修改插件源的方法

前言: Jenkins安装完成后需要下载多个插件,而国外插件源升级站点下载非常慢经常会出现超时的错误影响效率。所以最好的方法是当jenkins安装完成后修改插件源升级站点的地址。关于Jenkins2.585版本的安装方法参见、、。 一、修改更新站点地址 1、在Jenk…

2026/10/11 9:34:43 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →