【问题标题】:issue with arguments to messages.properties, all numbers except zero work correctlymessages.properties 的参数问题,除零之外的所有数字都可以正常工作
【发布时间】:2019-01-04 19:13:30
【问题描述】:

在我的 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 的正确方法是什么?

【问题讨论】:

    标签: grails groovy gsp


    【解决方案1】:

    g.message 中,参数始终作为List 传递。

    发件人:http://docs.grails.org/3.0.17/ref/Tags/message.html

    args(可选)- 使用代码时应用于消息的参数值列表。

    试试这个代码:

    <g:message code="my.app.thing.allowance(s)" args="[item.allowances.size()]"/>
    

    【讨论】:

      【解决方案2】:

      Bharat 的回答是正确的,但我想补充一下为什么会这样: 你已经通过args=0 这是来自消息标签库的代码:

      List args = []
      if (attrs.args) {
         args = attrs.encodeAs ? attrs.args as List : encodeArgsIfRequired(attrs.args)
         }
      

      在 groovy 中 0 是假的,这就是为什么你没有在零的情况下填写消息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-14
        • 1970-01-01
        • 2020-03-17
        • 1970-01-01
        • 2020-01-20
        相关资源
        最近更新 更多