javax.validation包下的@NotBlank 不生效 但@NotNull生效是因为什么
时间: 2024-04-07 21:31:04 浏览: 15
@NotBlank 和 @NotNull 都是 javax.validation.constraints 包下的注解,但是它们的作用不同,导致可能出现 @NotBlank 不生效但 @NotNull 生效的情况。
@NotBlank 注解用于验证字符串是否为空或为空格,而 @NotNull 注解用于验证对象是否为 null。如果字段为 null,则 @NotNull 注解会生效,但 @NotBlank 注解不会生效。
因此,可能是因为你要验证的字段不是字符串类型,而是对象类型,所以 @NotBlank 注解不生效,而 @NotNull 注解生效。如果要验证字符串类型的字段是否为空或为空格,应该使用 @NotBlank 注解。如果要验证对象类型的字段是否为 null,应该使用 @NotNull 注解。
相关问题
@NotBlank不生效
回答: 当使用实体类中的@NotBlank注解时,需要确保使用的是Java自带的@NotBlank注解,而不是Hibernate下的注解。因此,在实体类中导入的@NotBlank注解应该使用javax.validation.constraints.NotBlank而不是org.hibernate.validator.constraints.NotBlank。同时,还需要确保在pom.xml文件中添加了javax.validation和hibernate-validator的依赖。如果依然存在@NotBlank注解不生效的问题,可能是由于缺少配置或其他因素导致的,可以进一步检查代码逻辑、配置文件和相关依赖是否正确使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [@NotBlank注解不生效解决方法](https://blog.csdn.net/numbbe/article/details/118711371)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
- *2* [java中,如何解决@NotBlank不生效的问题 @NotBlank @NotEmpty不生效,以及对象嵌套问题...](https://blog.csdn.net/j610152753/article/details/127201199)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
javax.validation要怎样才生效?
javax.validation是Java EE规范中提供的一个数据验证框架,用于对数据进行验证和约束。要让javax.validation生效,需要以下几个步骤:
第一步,添加依赖。在项目的pom.xml文件中添加依赖:
```
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
```
第二步,配置Bean Validation实现类。javax.validation只是一个规范,需要一个具体的实现类来执行验证。常用的实现类包括Hibernate Validator和Apache BVal。在pom.xml文件中添加以下依赖配置:
```
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.2.Final</version>
</dependency>
```
或者
```
<dependency>
<groupId>org.apache.bval</groupId>
<artifactId>bval-jsr</artifactId>
<version>2.0.3</version>
</dependency>
```
第三步,在Java Bean中添加验证注解。在需要验证的Java Bean属性上添加验证注解,例如@NotNull、@Min、@Max、@Size等。例如:
```
public class User {
@NotNull
@Size(min=2, max=30)
private String username;
@NotNull
@Size(min=2, max=30)
private String password;
// getter and setter
}
```
第四步,在Controller中触发验证。在Controller中使用@Valid注解触发验证,如果验证失败会抛出MethodArgumentNotValidException异常。例如:
```
@RestController
public class UserController {
@PostMapping("/user")
public void createUser(@Valid @RequestBody User user) {
// do something
}
}
```
以上就是让javax.validation生效的步骤。需要注意的是,以上步骤只是一个简单示例,具体实现需要根据项目实际情况进行调整和优化。