Ich habe versucht, Feder-Validatoren zu einem Feder-Daten-Rest-Projekt hinzuzufügen.Spring-Data-Rest Validator
Ich folgte zusammen und richten Sie die „getting started“ Anwendung über diesen Link: http://spring.io/guides/gs/accessing-data-rest/
... und jetzt versuche ich, indem Sie die Dokumente hier eine benutzerdefinierte PeopleValidator hinzuzufügen: http://docs.spring.io/spring-data/rest/docs/2.1.0.RELEASE/reference/html/validation-chapter.html
Meine benutzerdefinierte PeopleValidator sieht aus wie
package hello;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
public class PeopleValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return true;
}
@Override
public void validate(Object target, Errors errors) {
errors.reject("DIE");
}
}
... und meine Application.java Klasse sieht nun wie folgt
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration;
@Configuration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public PeopleValidator beforeCreatePeopleValidator() {
return new PeopleValidator();
}
}
Ich würde erwarten, dass POST an die http://localhost:8080/people
URL würde zu einem Fehler irgendeiner Art führen, da der PeopleValidator alles zurückweist. Es wird jedoch kein Fehler ausgegeben und der Validator wird nie aufgerufen.
Ich habe auch versucht, den Validator manuell einzurichten, wie in Abschnitt 5.1 der Dokumentation zur Federdatenablage beschrieben.
Was fehlt mir?
Anscheinend wird das Ereignis "beforeSave" nicht ausgelöst, sondern das Ereignis "beforeCreate". Ich musste es immer noch "manuell" verbinden, anstatt eine Bean namens "beforeCreatePeopleValidator" zu verwenden. –
Ich finde die gleiche Situation, automatische Erkennung funktioniert nicht. – JBCP
Ich habe auch ein ähnliches Problem - manuell Verdrahtung Ereignisse funktioniert gut, automatische Erkennung schlägt fehl. – Mikk