显示 Grails 字段错误

发布于 2024-09-10 04:12:58 字数 348 浏览 10 评论 0原文

有谁知道我如何在下面的示例中打印出 fieldError

对于每个有错误的项目,我想打印我在 messages.properties 文件中定义的自定义错误消息,

此时所做的只是打印默认错误代码

item.errors?.allErrors?.each{ 
  println it.toString() 
}

我已经看到了其他示例,您可以在其中查找错误代码例如,一个字段,

it.getFieldError('title').code

但我想将默认消息转换为我的新错误消息并打印它。

Does anybody know how I could get the fieldError to print out in the example below.

for each item with an error, I would like to print custom error messages that I have defined in the messages.properties file

at the moment all this does is print the default error codes

item.errors?.allErrors?.each{ 
  println it.toString() 
}

I have seen other examples where you can lookup an error code for a field e.g.

it.getFieldError('title').code

but I would like to convert the default message into my new error message and print that.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

野稚 2024-09-17 04:12:58

您需要访问 messageSource bean,例如

def messageSource

在您的控制器或服务中。然后您可以使用以下命令访问消息

def locale = Locale.getDefault()
for (fieldErrors in bean.errors) {
   for (error in fieldErrors.allErrors) {
      String message = messageSource.getMessage(error, locale)
   }
}

You need access to the messageSource bean, e.g. with

def messageSource

in your controller or service. Then you can access the messages with

def locale = Locale.getDefault()
for (fieldErrors in bean.errors) {
   for (error in fieldErrors.allErrors) {
      String message = messageSource.getMessage(error, locale)
   }
}
魄砕の薆 2024-09-17 04:12:58

具有更好性能的更简单的解决方案是:

MessageSource messageSource //Inject the messageSource class

e.errors.allErrors.each {
  String message = messageSource.getMessage(it, Locale.default)
}

或者

如果您只想处理字段错误:

e.errors.fieldErrors.each {
   String message = messageSource.getMessage("modified.invalid.validator.message", [it.field, 'message'] as Object[], Locale.default))
}

其中 modified.invalid.validator.messagemessages.properties 中的本地字符串。在这个特定的例子中,这条消息的内容类似于......

modified.invalid.validator.message=Property [{0}] of [{1}] does not pass validation

A somewhat simplier solution with a better performance would be;

MessageSource messageSource //Inject the messageSource class

e.errors.allErrors.each {
  String message = messageSource.getMessage(it, Locale.default)
}

OR

If you want to deal only with field errors:

e.errors.fieldErrors.each {
   String message = messageSource.getMessage("modified.invalid.validator.message", [it.field, 'message'] as Object[], Locale.default))
}

Where modified.invalid.validator.message is the local string in your messages.properties. In this particular example, this message reads something like...

modified.invalid.validator.message=Property [{0}] of [{1}] does not pass validation
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文