gpt4 book ai didi

spring-mvc - 如何在 Spring MVC 中个性化数据转换失败的消息?

转载 作者:行者123 更新时间:2023-12-04 23:50:04 25 4
gpt4 key购买 nike

我有一个 Spring MVC Web 应用程序,如下所示:

@Controller
@RequestMapping("/users")
public class UserController extends FrontEndController {

@RequestMapping(method = RequestMethod.POST)
public String post(@Valid @ModelAttribute("user") User user, Errors errors, Model model) {
...
}
}

class User {
@NotBlank(message = "user name is mandatory")
String userName;

public enum Color {RED, GREEN, YELLO}

@NotNull(message = "color is mandatory")
private Color color;
// getters and setters
}

当我的网络 Controller 验证用户时,如果没有指定这个参数,它会告诉“颜色是强制性的”。此消息显示在 Web 表单中。但是,如果将字符串“BLUE”传递给颜色(这不是 3 个枚举选项之一),我会收到如下消息:
Failed to convert property value of type java.lang.String to required type User$Color for property color; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @javax.validation.constraints.NotNull User$Color for value BLUE; nested exception is java.lang.IllegalArgumentException: No enum constant User.Color.BLUE.

此消息显示在 Web 表单中。

正如 How to personality error message for hibernate validator enum? 所指出的那样此消息与验证器无关;此消息是在验证器运行之前创建的。 Spring 尝试将字符串“BLUE”转换为枚举,因此失败并生成此消息。

那么,我怎样才能告诉 Spring MVC 个性化这条消息呢?
而不是“无法将 java.lang.String 类型的属性值转换为...”,我想说一些简单的东西,比如“无效的颜色”。

最佳答案

您可以在同一个 .properties 中定义这些消息。为 Spring MVC 国际化/本地化定义消息的文件(您也可以本地化它们)。它适用于:验证 (JSR-303) 和数据绑定(bind)(数据转换)错误。

消息的格式描述here .

This question解释了如何配置资源包(这是您定义英语消息所需的全部内容)。实现国际化需要一些进一步的配置。请参阅 this 中的外部化和国际化部分教程。

关于spring-mvc - 如何在 Spring MVC 中个性化数据转换失败的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24632702/

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