0
点赞
收藏
分享

微信扫一扫

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

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

举报

相关推荐

0 条评论