加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

什么函数用于格式化/替换Grails / Groovy中字符串中的{0} {1}参

发布时间:2020-12-14 16:30:04 所属栏目:大数据 来源:网络整理
导读:我刚开始使用Groovy / Grails 我注意到您在验证表单时收到的错误消息如下所示: Property [{0}] of class [{1}] cannot be blank 例如,此代码将错误转储到控制台 s.errors.allErrors.each { println it.defaultMessage } 现在,it.arguments包含需要填写的参
我刚开始使用Groovy / Grails

我注意到您在验证表单时收到的错误消息如下所示:

Property [{0}] of class [{1}] cannot be blank

例如,此代码将错误转储到控制台

s.errors.allErrors.each
        {
            println it.defaultMessage
        }

现在,it.arguments包含需要填写的参数.

问题是,我在Grails或Groovy文档中找不到基于位置参数(如{0},{1})格式化字符串并替换数组值的方法

我需要类似python的%

格式化这些错误字符串的正确方法是什么,以便正确替换参数?

解决方法

实际上使用标准java.text.MessageFormat API替换这些标记.如果您使用Grail的g:message标签显示消息,如果您传递了合适的args =“…”属性,它将填补空白:

<g:message code="mymessagecode" args="${['size','org.example.Something']}"/>

在某些情况下(在GSP页面内和来自控制器IIRC),你可以像操作一样调用标签:

g.message(code:'mymessagecode',args: ['size','org.example.Something'])

请注意,作为消息代码提供的值只是一个符号字符串常量.框架将使用Spring的可重新加载资源包读取实际转换(其中包含“gap”的消息文本).

如果您实际拥有的只是翻译文本,则可以直接调用消息格式化API.参见例如:

import java.text.MessageFormat

...

args = ["english"].toArray()
println(MessageFormat.format("Translation into {0}",args))

// Or - as the method is variadic:
println(MessageFormat.format("Translation into {0}","english"))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读