@NotBlank没有校验对象类型属性
时间: 2024-06-08 15:12:38 浏览: 6
@NotBlank注解是用于校验字符串类型属性的,它会检查字符串是否为空或者只包含空格。在校验对象类型属性时,可以使用其他注解,例如@NotNull或@NotEmpty。这两个注解都可以用于校验对象类型属性,但有一些细微的区别。
@NotNull注解用于校验对象属性是否为null,而@NotEmpty注解用于校验对象属性是否为空。@NotEmpty注解在校验字符串类型属性时,会首先判断属性是否为null,如果不为null,则继续判断属性是否为空字符串。如果属性为null或者空字符串,则校验不通过。
因此,如果你想校验对象类型属性是否为null,可以使用@NotNull注解;如果你想校验对象类型属性是否为null或者为空,可以使用@NotEmpty注解。而对于字符串类型属性的非空校验,可以使用@NotBlank注解。
相关问题
Long类型的属性被@JsonFormat(shape = JsonFormat.Shape.STRING)注解修饰,判断不能为空使用@NotBlank还是@NotNull校验
根据提供的信息,@NotBlank和@NotNull注解都不能用于Long类型的属性。@NotBlank注解只能用于字符串类型的属性,而@NotNull注解只能用于对象类型的属性。对于Long类型的属性,可以使用@NotNull和@Min注解来判断不能为空。@Min注解可以限制属性的最小值,因此可以将value设置为1来限制Long类型的属性不为空。
示例代码如下:
```java
@Data
public class ClassGrade {
@NotNull(message = "id不能为空")
@Min(value = 1, message = "id必须为大于0")
@JsonFormat(shape = JsonFormat.Shape.STRING)
private Long id;
@NotNull(message = "props不能为空")
@Size(min = 1, message = "至少要有一个属性")
@Valid
private List<Student> students;
}
```
@NotBlank
@NotBlank是Hibernate Validator提供的一种注解,用于校验字符串类型的属性值是否为空或空格。
在使用@NotBlank时,需要注意以下几点:
1.需要在属性级别上注解@NotBlank,表示需要进行非空校验。
2.只能用于字符串类型的属性值上。
3.校验时会自动忽略前后的空格。
示例代码如下:
```java
import javax.validation.constraints.NotBlank;
public class User {
@NotBlank(message = "用户名不能为空")
private String userName;
//其他属性
}
```
在上述代码中,使用了@NotBlank注解对userName属性进行非空校验,同时指定了校验失败时的提示信息。
使用示例代码如下:
```java
User user = new User();
user.setUserName(""); //空字符串
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<User>> violations = validator.validate(user);
for (ConstraintViolation<User> violation : violations) {
System.out.println(violation.getMessage()); //输出:用户名不能为空
}
```
在上述代码中,首先创建了一个空字符串的User对象,并进行了校验。校验结果为校验失败,提示信息为“用户名不能为空”。