当前位置: 首页 > 面试题库 >

spring:如何解决验证错误->错误代码->错误消息

汤兴生
2023-03-14
问题内容

在Spring中,经过验证后,我们在中获得了一个BindingResult对象controller

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

因此,要检查领域错误的现场username我的FormObject我的呼叫:

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

太好了,现在我拿着一个FieldError对象,假设我使用的是DefaultMessageCodeResolvernow,其中包含类似4种可能的错误代码。

我如何从FieldError->用户可以使用的字符串开始?

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

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

我应该使用哪种方法来确定针对现场错误可能出现的 最佳 错误消息?

  • 我是否需要编写某种算法来遍历所有错误代码并从最具体的代码中进行选择?
  • spring是否提供任何支持来帮助确定最具体的错误消息?
  • 整个过程似乎很漫长且令人费解,我以为应该使春天变得容易。也许我完全不在基地了?

问题答案:

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

在大多数情况下,您甚至根本不需要这样做。Errors通常不需要将其放在您的支持对象上并自行翻译。formjsp库中的名称空间提供了一个标记,可为您查找错误消息。所有你需要做的就是把ErrorsModelMap。查看文件:

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



 类似资料:
  • 问题内容: 非常奇怪的错误。我使用的是http://developers.facebook.com/docs/authentication/。所以我创建了对fb的请求并传递redirect_uri。我在本地主机上使用测试站点。所以如果我通过 redirect_uri = http://localhost/test_blog/index.php 它工作正常,但如果我通过 redirect_uri =

  • 我为Money类编写了一个自定义Hibernate验证约束: 它工作正常,除了错误信息。我看到了非常奇怪的行为:找到了资源包,消息按名称解析,但它被包裹在特殊的字符中,如果消息不能按名称解析,通常会出现这些字符: 此处

  • 我有一个案例,我想对endpoint的@Request estParams进行一些输入验证。 我知道Validator和Custom Validator,我目前的策略意味着围绕Request estParams创建一个包装器对象,一个自定义验证器并应用类级别的注释来触发自定义验证。 我的问题是,自定义验证正在实现ConstraintValidator,这意味着验证器将返回true或false,Sp

  • 问题内容: 在注意到一个应用程序倾向于由于不正确的字符串值错误而丢弃随机电子邮件之后,我经过了并切换了许多文本列以使用列字符集和默认列归类(),以便它可以接受它们。这修复了大多数错误,并使应用程序在遇到非拉丁电子邮件时也停止出现sql错误。 尽管如此,某些电子邮件仍然导致程序遇到不正确的字符串值错误: 内容列是使用列字符集和列排序规则的数据类型。在此列中没有可切换的标志。 请记住,除非绝对必要,否

  • 问题内容: 在Windows Vista SP2 + Python 2.7.10上,我可以连接到https://www.python.org,但不能连接到https://codereview.appspot.com 剧本: 并输出: 如何解决问题,https://codereview.appspot.com/到底有什么问题? 问题答案: 我的猜测是,它与OpenSSL中的替代链处理有关,如Pyth

  • 我试图学习反应,所以我有这个示例代码的全堆栈反应投票应用程序,我试图让它工作,但运行npm安装后,接着npm启动我收到以下错误,当我运行有人能帮我解决这个问题吗: 这是我的package.json: 最后是我的日志文件:

  • 问题内容: 我们正在尝试使用VScode将代码部署到FRC机器人,但我们不断收到错误消息: 错误:找不到或加载主类 org.gradle.wrapper.GradleWrapperMain 原因:java.lang.ClassNotFoundException: org.gradle.wrapper.GradleWrapperMain 终端进程终止,退出代码为:1 我们发现其他人也遇到了类似的错误

  • 问题内容: 我连接了VPN,以设置广告资源API来获取产品列表,并且效果很好。一旦我从Web服务获得结果并绑定到UI。当我遇到付款错误时,我也将PayPal与我的make Express结帐应用程序集成在一起。我将servlet用于后端过程。谁能说出解决此问题的方法? 问题答案: 首先,你需要从尝试连接的服务器获取公共证书。这可以通过多种方式完成,例如联系服务器管理员并提出要求,使用OpenSSL