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

标签 string grails formatting groovy

我刚刚开始使用 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 页面中和从 Controller IIRC 中)您不能像函数一样调用标签:

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

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

如果您实际上只有翻译文本,则可以直接调用消息格式化 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"))

关于string - 什么函数用于格式化/替换 Grails/Groovy 中字符串中的 {0} {1} 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1237624/

相关文章:

c++ - 并排显示卡片

c++ - 解析逗号分隔的 std::string

ruby - 使用 Ruby 获取网页的所有链接

php - 使用变量从 mysql 数据库获取数据

hibernate - Grails:级联删除和外键

select - Grails f:字段显示选定下拉菜单

Grails ClassPath 错误,更新到 3.2.1 时

powershell - PowerShell格式化Cmdlet输出

c# - 如何将值从mysql传递到c#变量并保留两位小数

c# - 从文件中打印出字符串的一部分,从开始序列到停止序列