返回中文信息 @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")@Validatedpublic 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")@Validatedpublic 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
注解