Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

끄적끄적

[spring] @Valid와 MessageSource 사용하기 본문

개발

[spring] @Valid와 MessageSource 사용하기

으아아아앜 2020. 2. 19. 04:43

- MessageConfig 작성

@Configuration
public class MessageConfig implements WebMvcConfigurer {
    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver localeResolver = new SessionLocaleResolver();
        localeResolver.setDefaultLocale(Locale.KOREA);
        return localeResolver;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
        localeChangeInterceptor.setParamName("lang");
        return localeChangeInterceptor;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
    }

    @Bean
    public MessageSource messageSource(){
        ReloadableResourceBundleMessageSource messageSource
                = new ReloadableResourceBundleMessageSource();

        messageSource.setBasenames("classpath:/properties/messages/messages",
                                    "classpath:/properties/messages/messages_en");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }


    @Bean
    public LocalValidatorFactoryBean validator() {
        LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
        bean.setValidationMessageSource(messageSource());
        return bean;
    }
}

주의사항

  • 위 코드에서 @Bean validator()가 핵심적인 역할을 수행
  • messages.properties 파일들은 messages_xxx.properties 양식을 반드시 따라야한다.
  • setBasenames에서 경로에 /messages가 반드시 포함되어야함

 

 

아래와 같이 message에 message.properties의 내용을 입력

    @Data
    public static class Write{
        @NotBlank(message = "{board.title.not.blank}")
        @Size(min=1,max=50,message = "{board.title.size}")
        private String title;
        @NotBlank(message = "{board.content.not.blank}")
        private String content;
        @FileSize(fileSize = 1024*1024, nullable = true, message = "{board.filesize}")
        @FileExtension(fileExtension = {"txt","hwp","png","jpg"}, nullable = true, message = "{board.fileextension}")
        private List<MultipartFile> fileList;

        public boolean isNullFileList(){
            return fileList==null;
        }
    }

 

 

참고 :

https://www.javadevjournal.com/spring-boot/spring-custom-validation-message-source/

https://www.baeldung.com/spring-custom-validation-message-source  

https://www.baeldung.com/spring-boot-internationalization

 

 

 

Comments