我遇到了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
小数点是多少? 对此有任何粗俗的方法吗?
提前致谢
答案 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并显示原始值。