Używam Spring Boot. Posiadam walidowany parametr do serwisu
@Override
public void registerUser(
@Valid RegisterDTO registerDTO
) {
Walidowane pole wygląda np. następująco
@NotEmpty
@Pattern(regexp = "[a-zA-Z0-9_-]{6,36}")
private String username;
Ustawiam dla wyjątku ExceptionHandler
@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ValidationErrorDTO processValidationError(ConstraintViolationException ex) {
ValidationErrorDTO validationErrorDTO = new ValidationErrorDTO();
Set<ConstraintViolation<?>> set = ex.getConstraintViolations();
for (Iterator<ConstraintViolation<?>> iterator = set.iterator();iterator.hasNext(); ) {
ConstraintViolation<?> next = iterator.next();
validationErrorDTO.getFieldErrors()
.add(new ErrorFieldDTO(((PathImpl)next.getPropertyPath()).getLeafNode().getName(),
next.getMessage()));
}
return validationErrorDTO;
}
a wiadomości do błędów trzymam w pliku validationMessages.properties
NotEmpty.registerDTO.username=This field is required.
Pattern.registerDTO.username=Please enter at least 6 characters(max. 36 characters). Only letters, numbers and special characters '_' and '-'.
Mimo to, wyjątek zwraca mi taki efekt https://zapodaj.net/d1a4f695e6a7d.png.html Zamiast pobrać moją ustawioną wiadomość z pliku properties, to ustawia ten domyślny tekst. Jest sposób na pobranie lokalnej wiadomości z pliku properties?