避免grails格式化

时间:2011-02-11 17:35:25

标签: java grails integer number-formatting

我遇到了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

小数点是多少? 对此有任何粗俗的方法吗?

提前致谢

4 个答案:

答案 0 :(得分:3)

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

def i = params.int('id')

答案 1 :(得分:1)

我经常使用groovy语法来执行此操作:

def i = (params.id as int)

答案 2 :(得分:0)

使用Integer.parseInt而不是Integer.valueOf

答案 3 :(得分:0)

我注意到如果我使用它:

  

$ {fieldValue方法(豆:为myBean,字段: 'aLongField')}

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

如果我使用:

  

$ {myBean.aLongField}

甚至

  

$ {myBean.aLongField.toString()}

不调用NumberFormat并显示原始值。