springのカスタムバリデータの動的パラメータが解決されない
エラーメッセージとして、「{0}は必須入力です。」と表示され、{0}が解決されません。
RestControllerでエラーは返ります。
■実行結果
[ "fundNm: {0}は必須入力です。", ]
該当のソースコード
■Request(Form)
@NotBlank(message = "{require_check}") private String fundNm;
■message.properties
fundNm=ファンド名 require_check={0}は必須入力です。
■エラーハンドラー
@RestControllerAdvice public class ApiExceptionHandler { private static final Logger LOG = LoggerFactory.getLogger(ApiExceptionHandler.class); @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public ResponseEntity<?> handleException(MethodArgumentNotValidException ex) { LOG.error("ApiExceptionHandler", ex); final List<String> errors = new ArrayList<String>(); for (final FieldError error : ex.getBindingResult().getFieldErrors()) { errors.add(error.getField() + ": " + error.getDefaultMessage()); } HttpStatus status = HttpStatus.BAD_REQUEST; return new ResponseEntity<>(errors, status); } }
■WebMvcConfig implements WebMvcConfigurer
@Bean public MessageSource messageSource() { ReloadableResourceBundleMessageSource bean = new ReloadableResourceBundleMessageSource(); //メッセージのプロパティファイル名(デフォルト)を指定します //下記ではmessages.propertiesファイルがセットされます bean.setBasename("classpath:messages"); //メッセージプロパティの文字コードを指定します bean.setDefaultEncoding("UTF-8"); return bean; } @Bean public LocalValidatorFactoryBean localValidatorFactoryBean() { LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean(); localValidatorFactoryBean.setValidationMessageSource(messageSource()); return localValidatorFactoryBean; }
補足情報(FW/ツールのバージョンなど)
■build.gradle
implementation 'org.springframework.boot:spring-boot-starter-web' compile 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.0'
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/06 07:50
2020/04/09 05:02