Rob*_*use 17 java spring spring-data-rest spring-validator spring-boot
我一直在尝试将弹簧验证器添加到spring-data-rest项目中.
我跟着并通过以下链接设置"入门"应用程序:http://spring.io/guides/gs/accessing-data-rest/
...现在我正在尝试通过以下文档添加自定义PeopleValidator:http://docs.spring.io/spring-data/rest/docs/2.1.0.RELEASE/reference/html/validation-chapter html的
我的自定义PeopleValidator看起来像
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");
}
}
Run Code Online (Sandbox Code Playgroud)
...而我的Application.java类现在看起来像这样
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我希望POST到http://localhost:8080/peopleURL会导致某种错误,因为PeopleValidator拒绝了所有内容.但是,不会抛出任何错误,并且永远不会调用验证程序.
我还尝试过手动设置验证器,如spring-data-rest文档的5.1节所示.
我错过了什么?
Rob*_*use 12
因此,看起来前/后"保存"事件仅在PUT和PATCH上触发.POST时,"创建"事件之前/之后触发.
我使用configureValidatingRepositoryEventListener覆盖再次尝试手动方式,它工作.我不确定我在工作中做的与在家里做的不同.我明天要看.
我肯定会喜欢听到其他人是否有关于为什么它不起作用的建议.
对于记录,这是新的Application.java类的样子.
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
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.core.event.ValidatingRepositoryEventListener;
import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration;
@Configuration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application extends RepositoryRestMvcConfiguration {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
validatingListener.addValidator("beforeCreate", new PeopleValidator());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14014 次 |
| 最近记录: |