Spring Boot 中的自定义验证消息国际化?

2023-12-06

我正在尝试对我的验证注释应用正确的方法,如下所示:

public class UserRequest {

    @Size(min = 3, max = 50)
    @NotBlank(message = "name cannot be empty and min 3, max 50 character length")
    private String name;

    @Email(message = "email is not valid")
    private String email;
}

我需要以下功能:

1.如图所示name字段,我需要获取验证消息中的字段名称和最小-最大参数值。

2.我将来应该能够在需要时本地化这些消息。

那么,我应该如何在 Spring Boot 应用程序中实现这种方法呢?是MessageSource上提到的用法Spring Boot 中的自定义验证 MessageSource对此有适当的方法吗?

Update:当我尝试下面的方法时,我得到以下响应:

{
    "timestamp": "26.02.2023 01:10:15",
    "status": 400,
    "error": "Bad Request",
    "exception": "org.springframework.web.bind.MethodArgumentNotValidException",
    "message": "Validation failed for object='createPostRequest'. Error count: 1",
    "errors": [
        {
            "codes": [
                "NotBlank.createPostRequest.name",
                "NotBlank.name",
                "NotBlank.java.lang.String",
                "NotBlank"
            ],
            "arguments": [
                {
                    "codes": [
                        "createPostRequest.name",
                        "name"
                    ],
                    "arguments": null,
                    "defaultMessage": "name",
                    "code": "name"
                }
            ],
            "defaultMessage": "{name.not-blank}",
            "objectName": "createPostRequest",
            "field": "name",
            "rejectedValue": null,
            "bindingFailure": false,
            "code": "NotBlank"
        }
    ],
    "path": "/api/v1/posts"
}

因此,它似乎没有转换由message.properties在资源文件夹中。


您可以在中定义属性messages.properties对于验证错误。使用Spring Boot,无需注册MessageSource豆;它是自动完成的,并且可以通过以下方式完成附加配置application.properties.

name.size-error=min {min}, max {max} character length
name.not-blank=name cannot be empty
email.error=email is not valid

然后,您可以将这些属性用于每个注释中的验证消息。

@Size(min = 3, max = 50, message = "{name.size-error}")
@NotBlank(message = "{name.not-blank}")
private String name;

@Email(message = "{email.error}")
private String email;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 中的自定义验证消息国际化? 的相关文章

随机推荐