2016-07-29 9 views
0

Ich habe einen benutzerdefinierten Constraint-Validator erstellt, der auf einer Liste von Objekten funktioniert. Leider scheint es nicht aufgerufen zu werden, es funktionierte, als ich eine Wrapperklasse hatte, die die Liste mit der Anmerkung in der Liste enthielt.Benutzerdefinierter Spring-Validator wird nicht aufgerufen

Dies ist der Code, der feine

public class wrapper { 
    @ValidMyObjectList 
    List<MyObject> myObjects; 
    ... 
} 

gearbeitet Aber jetzt habe ich loswerden der Wrapper-Klasse und hinzugefügt, um die Anmerkung zu den Parameter in der Controller-Methode bekam.

Hier ist der Controller

@RequestMapping(value = "", method = RequestMethod.POST) 
    public List<MyObject> stopCheque(
     @ValidMyObjectList @RequestBody final List<MyObject> myObjects, 
     final HttpServletResponse httpServletResponse) { 

    .... 
} 

Hier ist die Einschränkung Anmerkung

@Constraint(validatedBy = MyObjectListValidator.class) 
@Retention(RetentionPolicy.RUNTIME) 
@Target({ ElementType.FIELD, ElementType.PARAMETER }) 
public @interface MyObjectList { 

    Class<?>[] groups() default {}; 

    String message() default ""; 

    Class<? extends Payload>[] payload() default {}; 
} 

Und ein Teil des Prüfers selbst

public class MyObjectListValidator implements 
    ConstraintValidator<MyObjectList, List<MyObject>> { 


    @Override 
    public void initialize(final MyObjectList myObjectList) { 
    } 

    @Override 
    public boolean isValid(final List<MyObjectList> myObjectLists, final ConstraintValidatorContext cxt) { 
    ... 
} 

sehr jede mögliche Hilfe schätzen würde. Dank

Antwort

2

auf Ihre Spring-Config-Klasse hinzufügen:

@Bean 
public MethodValidationPostProcessor methodValidationPostProcessor() { 
    return new MethodValidationPostProcessor(); 
} 

und füge @Validated Klasse an der Steuerung.

Verwandte Themen