2011-02-11 47 views
0

我有一个Grails应用程序的问题。避免grails格式化

在某些occassions,检索与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

这个小数点到底怎么了? 这是否有任何grailsy方法?

在此先感谢

回答

0

使用的Integer.parseInt而不是Integer.valueOf

1

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

def i = (params.id as int) 
0

我注意到,如果我用这个:

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

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

如果我使用:

$ {} myBean.aLongField

甚至

$ {myBean.aLongField.toString()}

不调用NumberFormat并显示原始值。