@NotBlank、@NotNull
时间: 2024-10-01 22:05:12 浏览: 62
`@NotBlank` 和 `@NotNull` 都是Java验证框架Hibernate Validator提供的校验注解,它们通常用于处理表单数据输入的有效性检查,确保字段不为空或包含空白字符。
1. **@NotBlank**: 当应用于字符串类型字段时,如果字段的值既不是null也不是空字符串(包括空格、制表符等空白字符),那么验证通过。如果字段为null或只包含空白字符,则会抛出异常,提示用户填写非空白信息。
2. **@NotNull**: 类似于`@NotBlank`,但它仅检查字段是否为null。如果字段值为null,则验证失败。如果字段有默认值或者非null对象,则视为有效。
例如,在接收用户注册信息时,可能会这么使用:
```java
public class User {
@NotBlank(message = "用户名不能为空")
private String username;
@NotNull(message = "密码不能为空")
private String password;
}
```
这两个注解有助于在早期阶段就发现潜在的数据输入错误,提高程序的健壮性。
相关问题
@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 用户名不能为空
```
这样,你就可以根据校验不通过的字段和自定义的提示信息进行相应的处理了。
@NotBlank和@NotNull
@NotNull和@NotBlank是两种常用的校验注解,它们有以下区别:
1. @NotNull: 这个注解表示被标注的字段不能为null,但可以为空字符串。它通常用于对基本数据类型的非空校验上,可以结合@Size、@Max、@Min等注解对字段数值进行大小的控制。
2. @NotBlank: 这个注解表示被标注的字段不能为null,并且调用trim()方法后,字符串的长度必须大于0。注意,@NotBlank只能用在String类型的字段上。
举例来说,如果我们有一个String类型的字段name,使用@NotNull注解,那么name字段不能为null,但可以为空字符串""。如果使用@NotBlank注解,则name字段不能为null,并且不能为空字符串,即必须有实际的字符内容。
总结起来,@NotNull用于基本数据类型的非空校验,@NotBlank用于String类型的非空校验,并且需要有实际的字符内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [常用的校验注解之 @NotNull、@NotBlank、@NotEmpty 的区别](https://blog.csdn.net/weixin_49770443/article/details/109772162)[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^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [Spring注解@NoNull、@NotEmpty、@NotBlank的区别及注解无效以及嵌套对象的无效解决办法](https://blog.csdn.net/wounler/article/details/124378538)[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^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,...](https://blog.csdn.net/weixin_46015018/article/details/122637042)[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^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文
相关推荐














