Cześć, mam zagwozdkę dotyczącą przesyłania danych z formularza, a raczej sytuacji failowych.
W apce mam integrację springa z hibernatem. W encji usera, którego tworzymy za pomocą formularza mam np. takie pole:
@Column(unique = true, nullable = false)
private String username;
I teraz pytanie jak zrobić wyświetlanie informacji "Podany nick już istnieje w systemie", gdzie w miejscu .. będzie pokazane to co wpisał user. Podobnie jeśli wpisze za krótkie hasło lub hasło != confirm.
Mogę zrobić walidację formularzy i poprawność pól będzie już sprawdzana na poziomie wypełniania formularza.
Próbowałem jednak najpierw zrobić za pomocą przechwytywania wyjątków:
@ExceptionHandler(MySQLIntegrityConstraintViolationException.class)
public String exc()
{
return "redirect:/user/fail";
}
Przechwytuje akurat ten wyjątek, bo to mi wyrzuciło podczas wpisania nazwy usera, która już istnieje.
A nawet gdybym to przechwycił to co mogę zrobić w tej metodzie ? Zwrócić z powrotem nazwę widoku ? Nie mam nawet dostępu do nazwy usera, żeby wypisać tą wiadomość.
Dobrze myślę, że lepszą praktyką jest walidacja formularzy niż przechwycenie wyjątków ? Po prostu chciałbym wiedzieć kiedy używać walidacji a kiedy przechwytywać wyjątki.
Pozdawiam serdecznie