当前位置: 首页 > 图灵资讯 > 技术篇> 返回中文信息 nstraint 'javax.validation.constraints.NotEmpty' validat

返回中文信息 nstraint 'javax.validation.constraints.NotEmpty' validat

来源:图灵教育
时间:2023-08-16 09:40:12

返回中文信息 @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)。这可能对中国开发人员不友好。我们可以通过定制错误信息来解决这个问题。

方法1:在属性上指定错误信息

我们可以直接在属性上指定错误信息,例如:

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 注解