messages.properties 的参数问题,除零以外的所有数字都可以正常工作
issue with arguments to messages.properties, all numbers except zero work correctly
在我的 Grails 2.4.4 应用程序中,我使用 messages.properties 进行国际化,具有以下值:
my.app.thing.allowance(s)={0} Allowance(s)
它正在 gsp 中使用,如下所示:
<g:message code="my.app.thing.allowance(s)" args="${item.allowances.size()}"/>
任何大于 0 的值都会正确显示消息,例如,如果 item.allowances.size() == 4
,则显示的消息是 4 Allowances(s)
问题是如果 item.allowances.size() == 0
则显示的消息是 {0} Allowance(s)
我试过用几种不同的方式编写参数,例如:
<g:message code="my.app.thing.allowance(s)" args="${item.allowances.isEmpty() ? 0.intValue() : item.allowances.size()}"/>
我调试了一些东西,我确信 item.allowances.size() == 0
但由于某些原因它无法正确处理 0 值。将 int 值为 0 的参数传递给 messages.properties 的正确方法是什么?
在 g.message
中,参数始终作为 List
传递。
发件人:http://docs.grails.org/3.0.17/ref/Tags/message.html
args (optional) - A list of argument values to apply to the message when code is used.
试试这个代码:
<g:message code="my.app.thing.allowance(s)" args="[item.allowances.size()]"/>
巴拉特的回答是正确的,但我想补充一下为什么会这样:
您已通过 args=0
这是来自消息标签库的代码:
List args = []
if (attrs.args) {
args = attrs.encodeAs ? attrs.args as List : encodeArgsIfRequired(attrs.args)
}
在groovy中0是假的,这就是为什么你没有填写零的情况下的消息
在我的 Grails 2.4.4 应用程序中,我使用 messages.properties 进行国际化,具有以下值:
my.app.thing.allowance(s)={0} Allowance(s)
它正在 gsp 中使用,如下所示:
<g:message code="my.app.thing.allowance(s)" args="${item.allowances.size()}"/>
任何大于 0 的值都会正确显示消息,例如,如果 item.allowances.size() == 4
,则显示的消息是 4 Allowances(s)
问题是如果 item.allowances.size() == 0
则显示的消息是 {0} Allowance(s)
我试过用几种不同的方式编写参数,例如:
<g:message code="my.app.thing.allowance(s)" args="${item.allowances.isEmpty() ? 0.intValue() : item.allowances.size()}"/>
我调试了一些东西,我确信 item.allowances.size() == 0
但由于某些原因它无法正确处理 0 值。将 int 值为 0 的参数传递给 messages.properties 的正确方法是什么?
在 g.message
中,参数始终作为 List
传递。
发件人:http://docs.grails.org/3.0.17/ref/Tags/message.html
args (optional) - A list of argument values to apply to the message when code is used.
试试这个代码:
<g:message code="my.app.thing.allowance(s)" args="[item.allowances.size()]"/>
巴拉特的回答是正确的,但我想补充一下为什么会这样:
您已通过 args=0
这是来自消息标签库的代码:
List args = []
if (attrs.args) {
args = attrs.encodeAs ? attrs.args as List : encodeArgsIfRequired(attrs.args)
}
在groovy中0是假的,这就是为什么你没有填写零的情况下的消息