gpt4 book ai didi

java - Spring : How to resolve a validation error -> error code -> error message

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:36:23 29 4
gpt4 key购买 nike

在 Spring 中,验证后我们在 controller 中得到一个 BindingResult 对象。

很简单,如果我收到验证错误,我想重新显示我的表单,并在每个受影响的字段上方显示错误消息。

因此,为了检查我的 FormObject 字段 username 上的字段错误,我调用:

FieldError usernameFieldError = bindingResult.getFieldError("username");

太好了,现在我持有一个 FieldError 对象,假设我使用的是 DefaultMessageCodeResolver,它现在包含大约 4 个可能的错误代码。

如何从 FieldError -> A string that is consumable to the user?

我在我的 Web 应用程序上下文中定义了一个 MessageSource,因此我可以将单个错误代码映射到一条消息。

但有时默认消息会是最好的,有时我希望其中两个错误代码可能有相关消息,因此我们需要选择最好的一个。

我使用什么方法来确定为字段错误呈现的最佳可能错误消息?

  • 我是否需要编写一些算法来遍历所有错误代码并从中选择最具体的?
  • spring 是否提供任何支持来帮助确定最具体的错误消息?
  • 整个过程看起来又长又复杂,我认为 spring 应该可以让这一切变得简单。也许我完全偏离了基地?

最佳答案

正如您所猜测的那样,您正在让自己变得比需要的更难。 FieldError 对象本身就是一个 MessageSourceResolvable。您不需要从中获取代码,然后手动将各个代码带到您的消息源并继续查找。您可以将它传递给您的 MessageSource,它会找到最具体的一个具有在您的语言环境中定义的翻译。 (假设您的代码解析器以正确的顺序放置它们。)

但在大多数情况下,您甚至不需要这样做。通常不需要将 Errors 放在支持对象上并自行翻译。 jsp 库中的 form 命名空间提供了一个为您查找错误消息的标记。您需要做的就是将 Errors 放入 ModelMap 中。查看文档:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/view.html#view-jsp-formtaglib-errorstag

关于java - Spring : How to resolve a validation error -> error code -> error message,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4202437/

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