2015-04-22 14 views
5

Używam adnotacji Spring @Valid dla sprawdzania poprawności pola fasoli, które adnotowane adnotacjami javax.constraints.Wykluczyć niektóre pola z walidacji @Valid

Ale napotkałem problem, gdy muszę wykluczyć niektóre pola z walidacji (tylko w niektórych przypadkach).

Zrobiłem śledztwo nie znalazłem żadnych przydatnych sposobów i większość odpowiedzi były datowane na lata 2010-2011. Jest to dość zaskakujące, ponieważ ta sytuacja jest tak powszechna.

Czy są jakieś zmiany z tamtych czasów na wiosnę 4. +? A może każdy może podzielić się osobistym doświadczeniem, jak to pokonać?

Dzięki.

Odpowiedz

5

Możesz użyć grupy sprawdzania poprawności i adnotacji @Validated.

Jest szczegół wyjaśnienie w http://www.javacodegeeks.com/2014/08/validation-groups-in-spring-mvc.html

Podejście to opiera się na hibernate validator's groups i pozwala na grupy walidacji oparte na interfejsie markera i stosuje się go na poziomie procedury obsługi, przykład jak podano w linku

@RequestMapping(value = "stepTwo", method = RequestMethod.POST) 
public String stepTwo(@Validated(Account.ValidationStepTwo.class) Account account, Errors errors) { 
    if (errors.hasErrors()) { 
     return VIEW_STEP_TWO; 
    } 
    return "redirect:summary"; 
} 
+0

Dokładnie to, czego potrzebowałem. Uwaga dla wszystkich: nazwa '@ Validated' może być myląca, ponieważ, jak myślałem na pierwszy rzut oka, powinienem przekazać grupom, które mają być pominięte, ale w rzeczywistości jest odwrotnie. Również jako symbol zastępczy dla domyślnej grupy domyślnej można użyć dla lepszej czytelności: '@Validated (javax.validation.groups.Default.class)', która jest równa '@ Validated' bez parametrów. – user2138356

+0

[Istnieje również odpowiedź] (http://forum.io/forum/spring-projects/web/117289-validated-s-given-groups-ould-consider-default-group-or-not) how not not duplikować 'Default.class' dla każdego pola. Ale niestety pasuje tylko do dodawania pola do domyślnej walidacji, nie wykluczaj tego. – GKislin

Powiązane problemy