gpt4 book ai didi

java - Spring boot 2.0.X属性异常处理程序响应ascii?

转载 作者:行者123 更新时间:2023-12-02 10:47:24 24 4
gpt4 key购买 nike

各位,我使用的是boot 2.0.x,项目编码和字符集都是UTF-8, 请求和响应相同,但是当使用bean验证2时, 转换错误消息,它显示ascii?1:定义一个bean如BeanValidation.java:

@Data
public class BeanValidation implements Serializable{
private static final long serialVersionUID = 6265504102271769397L;
@Email(message = "{bv2.email.invalid}")
@NotEmpty(message = "{bv2.email.required}")
private String email;
}

2:使用全局异常处理程序:

    @RestControllerAdvice
public class GenericExceptionHandler
extends ResponseEntityExceptionHandler
implements ErrorController{
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid1(
MethodArgumentNotValidException ex,
HttpHeaders headers,HttpStatus status,WebRequest request) {
BindingResult br = ex.getBindingResult();
List<String> errorList = new ArrayList<String>();
br.getFieldErrors().forEach(fe -> {
errorList.add(fe.getField() + ":" + fe.getDefaultMessage());
});
br.getGlobalErrors().forEach(ge -> {
errorList.add(ge.getObjectName() + ":" + ge.getDefaultMessage());
});
ApiError apiError = new ApiError(HttpStatus.BAD_REQUEST, ex.getLocalizedMessage(), errorList);
return handleExceptionInternal(ex, apiError, headers, apiError.getStatus(), request);
}
}

3:定义ValidationMessages.properties:

bv2.email.invalid = mail address is invalid,邮件地址无效!
bv2.email.required = mail address is required,邮件地址为必填项!

4:编写 Controller 来处理请求:

@PostMapping("/bv2")
public Boolean jsr380(@Valid @RequestBody BeanValidation bv2) {
return null == bv2 ? false : true;
}

5:启动应用程序并通过Postman请求,请求参数: http://localhost:12345/contextPath/bv2 ,请求数据:

{"email":"email address"}

响应结果:

{
"timestamp": "2018-09-22T01:50:09.729+0000",
"status": "400",
"error": "Bad Request",
"errors": [
{
"defaultMessage": "mail address is invalid,é\u0082®ä»¶å\u009c°å\u009d\u0080æ\u0097 æ\u0095\u0088!",
"objectName": "beanValidation",
"field": "email",
"rejectedValue": "email address",
"bindingFailure": false,
"code": "Email"
}
],
"message": "Bad Request",
"path": "/contextPath/bv2"
}
  • 它响应成功,但它自动编码ascii,所以我的问题是: "defaultMessage": "邮件地址无效,é\u0082®ä»¶å\u009c°å\u009d\u0080æ\u0097 æ\u0095\u0088!",
  • 当我使用简体中文时,它出现如ascii代码,如何正常显示或解码如:

    mail address is invalid,邮件地址无效!
    mail address is required,邮件地址为必填项!

    谢谢大家!

    最佳答案

    根据我的经验,您可以在文件“xxx.properties”中执行此操作

    bv2.email.invalid = 邮件地址无效,é\u0082®ä»¶å\u009c°å\u009d\u0080æ\u0097 æ\u0095\u0088!

    关于java - Spring boot 2.0.X属性异常处理程序响应ascii?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52452840/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com