NotBlank与NotNull区别
时间: 2024-06-02 15:10:23 浏览: 126
NotBlank和NotNull都是用于校验参数非空的注解,但是它们的作用和使用场景略有不同。
@NotNull注解是javax.validation.constraints包中的注解,用于校验参数不为null。它可以用于所有的数据类型,包括基本数据类型和引用类型。
@NotBlank注解是org.hibernate.validator.constraints包中的注解,用于校验字符串类型的参数不为空或者长度大于0。它只能用于字符串类型的参数。
因此,如果需要校验一个字符串类型的参数不为空或者长度大于0,应该使用@NotBlank注解;如果需要校验一个参数不为null,无论是基本数据类型还是引用类型,都应该使用@NotNull注解。
相关问题
notblank和notnull区别
在许多编程语言中,"not null" 和 "not blank" 是两个不同的概念。
"Not null" 意味着值不为空。在许多编程语言中,它通常用于表示一个变量或属性必须具有任何非空值,否则会引发异常或错误。
"Not blank" 意味着值不仅不为空,而且还包含实际字符。在许多编程语言中,它通常用于表示一个变量或属性必须具有任何非空值,并且该值必须包含至少一个非空格字符。
总之,“not null” 检查一个值是否为空,而 “not blank” 检查一个值是否为空且是否包含非空格字符。
@NotBlank @NotNull @NotBlank校验非空注解怎么获得自定义message
对于`@NotBlank`、`@NotNull`等校验非空注解,你可以通过在注解上使用`message`属性来获得自定义的提示信息。例如,使用`@NotBlank(message = "不能为空")`来指定当校验不通过时的提示信息为"不能为空"。
在使用这些注解进行校验时,如果校验不通过,会抛出`ConstraintViolationException`异常。你可以捕获该异常,并通过调用`getConstraintViolations()`方法来获取所有的校验错误信息。每个校验错误信息都包含了错误的字段、错误的值以及提示信息等。
以下是一个示例代码,演示了如何获取自定义的提示信息:
```java
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.constraints.NotBlank;
import java.util.Set;
public class Main {
public static void main(String[] args) {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
User user = new User("");
Set<ConstraintViolation<User>> violations = validator.validate(user);
for (ConstraintViolation<User> violation : violations) {
System.out.println(violation.getPropertyPath() + " " + violation.getMessage());
}
}
static class User {
@NotBlank(message = "用户名不能为空")
private String username;
public User(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
}
```
运行上述代码,输出将会是:
```
username 用户名不能为空
```
这样,你就可以根据校验不通过的字段和自定义的提示信息进行相应的处理了。
阅读全文