返回中文信息 @NotEmpty
校验
介绍
在 Java 的开发过程中,我们经常需要对输入参数进行校验。而校验注解是一种常见的校验方式之一。其中,@NotEmpty
是一种常用的校验注解,用于验证字符串类型的参数是否为空。但是,当需要返回中文信息时,@NotEmpty
注解默认返回的是英文错误信息,这对于中文开发人员来说可能不太友好。本文将介绍如何修改 @NotEmpty
注解的错误信息,并提供示例代码。
@NotEmpty
注解简介
@NotEmpty
是 Java Bean Validation (JSR-303)规范中的一种校验注解,用于验证字符串类型的参数是否为空。它通常用于判断表单输入、参数传递等情况下的非空校验。
使用 @NotEmpty
注解的方式非常简单,只需要在需要校验的参数上添加该注解即可。例如:
public class User {
@NotEmpty(message = 用户名不能为空)
private String username;
// 省略其他属性和方法
}
上述代码中,username
字段使用了 @NotEmpty
注解,并指定了错误信息为 "用户名不能为空"。
修改 @NotEmpty
注解的错误信息
在默认情况下,@NotEmpty
注解返回的错误信息是根据注解的类型和属性名生成的(例如:Username may not be empty
)。这对于中文开发人员来说可能不太友好。我们可以通过自定义错误信息来解决这个问题。
方法一:在属性上指定错误信息
我们可以直接在属性上指定错误信息,例如:
public class User {
@NotEmpty(message = 用户名不能为空)
private String username;
// 省略其他属性和方法
}
上述代码中,我们在 @NotEmpty
注解的 message
属性中指定了错误信息为 "用户名不能为空"。这样,在校验失败时,将会返回这个自定义的错误信息。
方法二:使用资源文件
我们也可以使用资源文件来统一管理错误信息。首先,我们需要在项目中创建一个资源文件,例如 ValidationMessages.properties
。然后,我们在资源文件中定义错误信息,如下所示:
javax.validation.constraints.NotEmpty.message=用户名不能为空
接下来,我们需要在 User
类中添加一个额外的注解 @Validated
,并在校验失败时,通过 BindingResult
对象获取错误信息。示例代码如下:
@RestController
@RequestMapping(/users)
@Validated
public class UserController {
@PostMapping
public ResponseEntity<String> createUser(@RequestBody @Valid User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
List<ObjectError> errors = bindingResult.getAllErrors();
StringBuilder errorMessage = new StringBuilder();
for (ObjectError error : errors) {
errorMessage.append(error.getDefaultMessage()).append(;);
}
return ResponseEntity.badRequest().body(errorMessage.toString());
}
// 省略其他逻辑
return ResponseEntity.ok(用户创建成功);
}
}
上述代码中,我们在 createUser
方法中添加了 @Valid
注解来对 User
对象进行校验。如果校验失败,我们将通过 BindingResult
对象获取错误信息,并将错误信息返回给客户端。
代码示例
下面提供一个完整的示例代码,展示如何使用自定义错误信息来返回中文信息:
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@RestController
@RequestMapping(/users)
@Validated
public class UserController {
@PostMapping
public ResponseEntity<String> createUser(@RequestBody @Valid User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
List<ObjectError> errors = bindingResult.getAllErrors();
StringBuilder errorMessage = new StringBuilder();
for (ObjectError error : errors) {
errorMessage.append(error.getDefaultMessage()).append(;);
}
return ResponseEntity.badRequest().body(errorMessage.toString());
}
// 省略其他逻辑
return ResponseEntity.ok(用户创建成功);
}
}
class User {
@NotEmpty(message = 用户名不能为空)
private String username;
// 省略其他属性和方法
}
总结
本文介绍了如何修改 @NotEmpty
注解