Piszę w Springu klasę ExceptionHandlera obecnie zwracam dwa wyjątki przy rejestracji użytkownika, username already exist i email already exist. Używam do tego adnotacji ControlerAdvice, ExceptionHandler i ResponseStatus, ale problem mam z adnotacja ResponseStatus. Jeśli nie przekaże jej property 'reason' to nie działa i zwracany jest 500( potrzebuję 422) i poprawna wiadomość, taka jak chcę, do tego rzuca mi wyjątek "Circular view path exception" dla endpointu "/registration".
Natomiast jak przekażę "reason" to ResponseStatus działa i zwracany jest kod 422 ale wiadomość ciągnie z "reason", a ja potrzebuję pociagnąć ją z wyjątku
Kodzik:
@ControllerAdvice
public class RestExceptionHandler {
// zwraca 422 ale wiadomosc nie ta
@ExceptionHandler(UsernameAlreadyExistException.class)
@ResponseStatus(value = HttpStatus.UNPROCESSABLE_ENTITY, reason = "Because f*** you! That's why...")
public ErrorMessage handleUserAlreadyExist(UsernameAlreadyExistException e) {
return new ErrorMessage(e.getMessage());
}
// wiadomosc zwraca dobra, ale kod nie taki i sypie sie wszystko
@ExceptionHandler(EmailAlreadyExistException.class)
@ResponseStatus(HttpStatus.UNPROCESSABLE_ENTITY)
public ErrorMessage handleEmailAlreadyExist(EmailAlreadyExistException e) {
return new ErrorMessage(e.getMessage());
}
}
Czy potrzebuję tu skonfigurować jakoś @ResponseStatus czy sypie się coś po drodze? Nie mam pomysłu jak to rozwiązać.