【问题标题】:Avoid grails formatting避免 grails 格式化
【发布时间】:2011-09-09 18:06:35
【问题描述】:

我在使用 grails 应用时遇到问题。

在某些情况下,当使用 MyObject.get(id) 检索实例时,我会收到以下异常:

Expected: class java.lang.Integer, got class java.lang.String

所以我这样做了:

Integer i = Integer.valueOf(params.id);

MyObject.get(i);

但是,出现了一个新问题。 Integer#valueOf(String) 似乎返回了一个格式化的值,所以如果 params.id 大于 1000,i 会得到一个小数点(例如 1253 ->1.253)。

更新

经过更多研究,我发现params.id 的值带有小数点,即使它不存在于查询字符串中:

http://somesite.com//action?other=33&id=1485

params.id = 1.485

那个小数点是怎么回事? 有没有什么优雅的方法呢?

提前致谢

【问题讨论】:

    标签: java grails integer number-formatting


    【解决方案1】:

    Simple Type Converters section of the Grails documentation 中所述,您可以将传入的参数从 String 转换为 int,如下所示:

    def i = params.int('id')
    

    【讨论】:

      【解决方案2】:

      我经常使用 groovy 语法来做到这一点:

      def i = (params.id as int)
      

      【讨论】:

        【解决方案3】:

        使用 Integer.parseInt 代替 Integer.valueOf

        【讨论】:

          【解决方案4】:

          我已经注意到如果我使用这个:

          ${fieldValue(bean:myBean,field:'aLongField')}

          在 GSP 页面中,它将被格式化并显示为“1.485”或“1,485”,具体取决于当前的语言环境。

          如果我使用:

          ${myBean.aLongField }

          甚至

          ${myBean.aLongField.toString() }

          不调用 NumberFormat 并显示原始值。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-06-05
            • 1970-01-01
            • 1970-01-01
            • 2017-03-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-06-28
            相关资源
            最近更新 更多