最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot?Validation提示信息國際化配置方式

 更新時間:2023年02月23日 10:24:50   作者:羅小爬EX  
這篇文章主要介紹了SpringBoot?Validation提示信息國際化配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

引言

之前介紹過Spring Boot Validation的使用及擴展

本文在此基礎上重點講解下Spring Boot Validation如何集成國際化。

Spring Boot Validation支持JSR-380(aka. Bean Validation 2.0,part of Jakarta EE and JavaSE)注解,可通過驗證注解的message屬性設置驗證錯誤提示信息,且每個驗證注解都有默認的message配置,例如@NotBlank的message屬性值設置如下圖:

默認的message = "{...}"的形式即指定國際化屬性的名稱,后續(xù)會根據(jù)語言環(huán)境替換為對應的值,而這些國際化屬性的定義可參見hibernate-validator中的org.hibernate.validator.ValidationMessages.properties等一些列國際化屬性定義:

而我們在實際使用過程中,除了可以設置message="{propName}"的形式來讀取國際化屬性,亦可以直接設置值message="具體的提示信息",而不明確設置message則使用之前提到的org.hibernate.validator.ValidationMessages.properties中的默認配置。

Spring Boot Validation起初其并不直接支持讀取Spring Boot自身的國際化配置(通過spring.messages進行配置),而是需要在resources/ValidationMessages.properties中進行配置的國際化屬性才會生效,而后續(xù)在Spring Boot 2.6+版本才支持Validation與Spring Boot自身的國際化配置相結合。

接下來結合Spring Boot 2.5和2.6版本分別介紹下Spring Boot Validation如何集成自定義國際化驗證提示信息。

Spring Boot 2.5.x

在Spring Boot 2.5.x版本中,Spring Boot Validation默認只支持讀取resources/ValidationMessages.properties系列文件的中的國際化屬性,且中文需要進行ASCII轉碼才可正確顯示

如下圖:

而就算Spring Boot應用亦聲明了自身的國際化配置,但是Spring Boot Validation框架是讀取不到的

例如:

Spring Boot應用自身的國際化配置如下圖,但是在驗證注解message屬性設置i18n/messages.properties中的"{propName}"是讀取不到的:

而想要Spring Boot Validation框架和Spring Boot自身使用同樣的國際化配置,則可通過如下方式進行配置:

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.Validator;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Spring Web驗證器自定義國際化文件配置<br/>
 * 注:適用于Spring Boot 2.5.*
 *
 * @author luohq
 * @date 2022-05-21
 */
@Configuration
public class WebValidationConfig implements WebMvcConfigurer {

    /**
     * 國際化消息源
     */
    private MessageSource messageSource;

    public WebValidationConfig(MessageSource messageSource) {
        //注入Spring Boot國際化消息源(需通過spring.messages明確指定)
        this.messageSource = messageSource;
    }

    /**
     * 使用自定義LocalValidatorFactoryBean,
     * 設置Spring國際化消息源
     */
    @Bean
    @Override
    public Validator getValidator() {
        LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
        //僅兼容Spring Boot spring.messages設置的國際化文件和原h(huán)ibernate-validator的國際化文件
        //不支持resource/ValidationMessages.properties系列
        bean.setValidationMessageSource(this.messageSource);
        return bean;
    }

}

注:

  • 通過上述配置類進行配置后,
  • 僅兼容Spring Boot spring.messages設置的國際化文件和原h(huán)ibernate-validator的國際化文件
  • 不再支持resource/ValidationMessages.properties系列

Spring Boot 2.6.x

翻了Github上Spring Boot框架的Release說明,發(fā)現(xiàn)其在2021-08-20發(fā)布的v2.6.0-M2中提到了支持使用自身國際化MessageSource解析驗證提示信息,也就是說Spring Boot 2.6.x版本之后已支持驗證注解message屬性引用Spring Boot自身國際化配置。

實際測試Spring Boot 2.6.x版本,驗證注解message="{propName}"

  • 可以直接讀取通過spring.messages設置的國際化配置中的屬性(設置UTF-8編碼后中文可無需ASCII轉碼),
  • 同時亦支持讀取resources/ValidationMessages.properties中的配置(中文需ASCII轉碼),
  • 且依舊支持原hibernate-validator的國際化文件。

且讀取優(yōu)先級依次從上到下,即最上面的優(yōu)先生效。

具體的配置及使用方式見下圖:

Spring Boot 2.6關于Spring Boot Validation與MessageSource的融合,具體實現(xiàn)細節(jié)可參見Release中提到的GitHub Pull Request #17530

參考:

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 詳解Spring Boot Junit單元測試

    詳解Spring Boot Junit單元測試

    本篇文章主要介紹了詳解Spring Boot Junit單元測試,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Java小項目之迷宮游戲的實現(xiàn)方法

    Java小項目之迷宮游戲的實現(xiàn)方法

    這篇文章主要給大家介紹了關于Java小項目之迷宮的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Springboot詳解RocketMQ實現(xiàn)廣播消息流程

    Springboot詳解RocketMQ實現(xiàn)廣播消息流程

    RocketMQ作為一款純java、分布式、隊列模型的開源消息中間件,支持事務消息、順序消息、批量消息、定時消息、消息回溯等,本篇我們了解如何實現(xiàn)廣播消息
    2022-06-06
  • IntelliJ IDEA 2020.1 EAP4 發(fā)布,重命名/更改簽名新功能一覽

    IntelliJ IDEA 2020.1 EAP4 發(fā)布,重命名/更改簽名新功能一覽

    這篇文章主要介紹了IntelliJ IDEA 2020.1 EAP4 發(fā)布,重命名/更改簽名新功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Java實現(xiàn)的n階曲線擬合功能示例

    Java實現(xiàn)的n階曲線擬合功能示例

    這篇文章主要介紹了Java實現(xiàn)的n階曲線擬合功能,結合實例形式分析了Java基于矩陣的多項式曲線擬合相關操作技巧,需要的朋友可以參考下
    2018-01-01
  • Spring Security獲取用戶認證信息的實現(xiàn)流程

    Spring Security獲取用戶認證信息的實現(xiàn)流程

    Spring Security是一個能夠為基于Spring的企業(yè)應用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI和AOP功能,為應用系統(tǒng)提供聲明式的安全訪問控制功能
    2022-12-12
  • java結合keytool如何實現(xiàn)非對稱簽名和驗證詳解

    java結合keytool如何實現(xiàn)非對稱簽名和驗證詳解

    這篇文章主要給大家介紹了關于java結合keytool如何實現(xiàn)非對稱簽名和驗證的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • Eclipse創(chuàng)建java程序可執(zhí)行jar包教程

    Eclipse創(chuàng)建java程序可執(zhí)行jar包教程

    這篇文章主要為大家分享了Eclipse創(chuàng)建java程序可執(zhí)行jar包教程,具有一定的實用性和參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Java中indexOf()方法詳解及其日常使用舉例

    Java中indexOf()方法詳解及其日常使用舉例

    這篇文章主要給大家介紹了關于Java中indexOf()方法詳解及其日常使用舉例的相關資料,indexOf()方法是JavaScript字符串的內(nèi)置方法之一,它用于查找給定子字符串在原始字符串中第一次出現(xiàn)的位置,需要的朋友可以參考下
    2023-12-12
  • Spring中Websocket身份驗證和授權的實現(xiàn)

    Spring中Websocket身份驗證和授權的實現(xiàn)

    在Web應用開發(fā)中,安全一直是非常重要的一個方面,本文主要介紹了Spring中Websocket身份驗證和授權的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-08-08

最新評論

桦甸市| 岳阳市| 讷河市| 泸定县| 赤峰市| 吉首市| 女性| 绥中县| 井冈山市| 久治县| 湖州市| 东至县| 临沭县| 会昌县| 芒康县| 光山县| 临夏县| 仁化县| 拜泉县| 汉源县| 罗田县| 北流市| 清徐县| 铜川市| 丰城市| 资中县| 庆云县| 赤峰市| 靖安县| 迭部县| 乡宁县| 新乡县| 淳化县| 偏关县| 贵溪市| 静宁县| 冷水江市| 三都| 田东县| 紫阳县| 临夏市|