oxy*_*xyt 4 rest spring json mongodb spring-data-rest
我试图将@NotNull约束添加到我的Person对象中,但我仍然可以使用空电子邮件@POST一个新的Person.我正在使用MongoDB的Spring启动休息.
实体类:
import javax.validation.constraints.NotNull;
public class Person {
@Id
private String id;
private String username;
private String password;
@NotNull // <-- Not working
private String email;
// getters & setters
}
Run Code Online (Sandbox Code Playgroud)
存储库类:
@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends MongoRepository<Person, String> {
}
Run Code Online (Sandbox Code Playgroud)
申请类:
@SpringBootApplication
public class TalentPoolApplication {
public static void main(String[] args) {
SpringApplication.run(TalentPoolApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
的pom.xml
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.BUILD-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
...
Run Code Online (Sandbox Code Playgroud)
当我通过Postman @POST一个新对象时:
{
"username": "deadpool",
"email": null
}
Run Code Online (Sandbox Code Playgroud)
我仍然STATUS 201
使用此有效负载创建:
{
"username": "deadpool",
"password": null,
"email": null
....
....
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我有同样的问题,但只是启用验证对我不起作用,这确实适用于JPA和MongoDb,以节省其他人在这方面的花费年龄.这不仅可以使验证工作,而且我得到一个很好的宁静的400错误,而不是默认的500.
不得不将它添加到我的build.gradle依赖项中
compile('org.hibernate:hibernate-validator:4.2.0.Final')
Run Code Online (Sandbox Code Playgroud)
和这个配置类
@Configuration
public class CustomRepositoryRestConfigurerAdapter extends RepositoryRestConfigurerAdapter {
@Bean
public Validator validator() {
return new LocalValidatorFactoryBean();
}
@Override
public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
validatingListener.addValidator("afterCreate", validator());
validatingListener.addValidator("beforeCreate", validator());
validatingListener.addValidator("afterSave", validator());
validatingListener.addValidator("beforeSave", validator());
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9222 次 |
最近记录: |