2016-06-17 3 views
0

Ich möchte den Hibernate-Validator verwenden, um Argumente meiner Methode zu validieren.So fügen Sie JSR 303-Validierung zu Argumenten einer Methode hinzu

Ich habe versucht, Beispiele zu Nachschau und ging durch das folgende Beispiel JSR 303. Validate method parameter and throw exception

Aber die Antwort meines Problem nicht exakt lösen und auch die Links in der Antwort abgelaufen.

Hier ist ein Beispielcode von dem, was ich versucht habe.

//removing imports to reduce the length of code. 

/** 
* Created by Nick on 15/06/2016. 
*/ 

@Component 
public class ValidationService { 

    @Value("${namesAllowed}") 
    private String validNames; 

    @Autowired 
    private Validator validator; 

    public boolean validateName(
      @NotEmpty 
      @Pattern(regexp = ".*'.*'.*") 
      @Email 
      @Length(max = 10) 
        String name 
    ) { 

     Set<ConstraintViolation<String>> violations = validator.validate(name); 

     for (ConstraintViolation<String> violation : violations) { 
      String propertyPath = violation.getPropertyPath().toString(); 
      String message = violation.getMessage(); 
      System.out.println("invalid value for: '" + propertyPath + "': " + message); 
     } 
     List<String> namesAllowed= Arrays.asList(validNames.split(",")); 
     if (namesAllowed.contains(name.substring(name.indexOf(".") + 1))) { 
      return true; 
     } 
     return false; 
    } 
} 

}

Antwort

1

Methodenvalidierung wurde als Teil Bean Validation 1.1 standardisiert. Sie können mehr darüber im Hibernate Validator reference guide erfahren.

Mit Spring müssen Sie eine MethodValidationPostProcessor Bean konfigurieren und die eingeschränkte Klasse mit @Validated annotieren. Auch this answer kann hilfreich für Sie sein.

Verwandte Themen