0

Ich benutze Hibernate Validator mit Spring Boot. Ich habe eine Variable in einer Klasse, die ich wie folgt annotiert habe.Access Hibernate Validator Nachrichten

Public class User { 

@Pattern(regexp="[email protected]+\\..+", message="Wrong email!") 
private String userEmail; 

} 

Ich verwende die Validierung in einem Controller.

@PostMapping("/users") 
public ResponseEntity addUser(@Valid @RequestBody User user, BindingResult result) { 

    if(result.hasErrors()) { 
     log.info("There are errors in the input"); 
    } 

    ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 
     Validator validator = factory.getValidator(); 
     Set<ConstraintViolation<User>> inputErrors = validator.validate(user); 

     log.info("Errors: " + inputErrors.toString()); 
} 

Gibt es einen einfacheren Grund, auf die Überprüfungsmeldungen dann durch die Fabrik zuzugreifen? So etwas wie

result.getMessage(); 

Antwort

0

Sie Nachrichtenquelle an Ihrem Controller

@Autowired 
private MessageSource messageSource; 

und nutzen Sie die Nachricht

messageSource.getMessage(<your key from the error>, null, locale); 

Sie ned locale erhalten richtig lokalisierten Text autowire können. Sie müssen die Fehler iterieren, um alle Meldungen für alle gefundenen Validierungsfehler zu erhalten.

+0

Wäre der Schlüssel in meinem Fall "userEmail"? Gibt es eine gute Möglichkeit, das Gebietsschema abzurufen? – g3blv

Verwandte Themen