Rozumiem, że jeśli użyję springMVC i przekażę obiekt json do kontrolera, spróbuje on powiązać obiekt json z parametrem kontrolera, ale jak obsłużyć błąd wiązania? Używam czegoś takiego, ale wydaje się, że nie jest to przydatne.

public String save(@RequestBody @Valid SomeList list, BindingResult result){
    if(result.hasError()){
        System.out.println(result);
        }
}
0
Nan 2 marzec 2012, 23:49

2 odpowiedzi

Najlepsza odpowiedź

Ogólnie rzecz biorąc, możesz zwrócić ten sam widok, który przesłał dane. Jeśli masz tam tagi <form:error>, zostaną one wyświetlone (ze względu na wiążące informacje).

Ale z pewnością jest to wywołanie ajaxowe, więc możesz ustawić określony status odpowiedzi w ciele if:

response.setStatus(HttpServletResponse.NOT_ACCEPTABLE);

A następnie poszukaj tego kodu statusu (406) w procedurze obsługi odpowiedzi ajax. Jeśli potrzebujesz dokładnych informacji o walidacji, możesz spróbować zserializować sam wynik powiązania jako odpowiedź.

1
Bozho 3 marzec 2012, 02:09

System.out.println nie zrobi prawie nic. Zasadniczo to, co mówi, to wyprowadzanie wyniku powiązania do wyjścia standardowego serwera jvm.

Ponieważ zwracasz String, zakładam, że zwracasz nazwę widoku, więc możesz chcieć przekierować użytkownika do strony błędu.

0
dardo 3 marzec 2012, 01:24