首页 > 解决方案 > 为什么来自消息源的自定义消息不适用于请求参数验证?

问题描述

我试图在验证请求参数时抛出自定义消息

@Size(max = 10, message = "{custom.message}")
@RequestParam(value = "param") String param)

我的 Controller 方法用@Validated.

这是我的消息源配置

@Bean
  public ReloadableResourceBundleMessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource =
        new ReloadableResourceBundleMessageSource();
    messageSource.setBasenames("classpath:messages/messages");
    messageSource.setUseCodeAsDefaultMessage(true);
    messageSource.setDefaultEncoding(StandardCharsets.UTF_8.name());
    return messageSource;
  }

  @Bean
  public LocalValidatorFactoryBean getValidator() {
    LocalValidatorFactoryBean localValidator = new LocalValidatorFactoryBean();
    localValidator.setValidationMessageSource(messageSource());
    return localValidator;
  }

相同的注释在 DTO 中有效(显示自定义消息),但是当用于请求参数时,消息是

custom.message

为什么会这样?谢谢。

标签: javaspring-bootspring-validator

解决方案


遇到错误,在消息属性中消息名称有错字。在消息属性中我有custom_message,但我正在使用custom.message.


推荐阅读