避免 Grails 格式化
我在使用 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
为什么那个小数点在那里?有什么“grailsy”方法吗?
I'm having an issue with a Grails app.
On some occasions, when retrieving an instance with MyObject.get(id), I get this exception:
Expected: class java.lang.Integer, got class java.lang.String
So I did this:
Integer i = Integer.valueOf(params.id);
MyObject.get(i);
However, the a new problem appears. Integer#valueOf(String)
seems to return a formatted value, so if params.id
is greater than 1000, i
gets a decimal point (e.g 1253
->1.253
).
Update
After some more research, I've found that the value of params.id
is coming with the decimal dot, even though it's not present in the query string:
http://somesite.com//action?other=33&id=1485
params.id = 1.485
Why is that decimal point there? Is there any "grailsy" approach to this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如 中所述Grails 文档的简单类型转换器部分,您可以将传入参数从 String 转换为 int,如下所示:
As described in the Simple Type Converters section of the Grails documentation, you can convert incoming parameters from String to int like so:
我经常使用 groovy 语法来执行此操作:
I often use groovy syntax to do this:
使用 Integer.parseInt 而不是 Integer.valueOf
Use Integer.parseInt instead of Integer.valueOf
我已经注意到,如果我使用这个:
在 GSP 页面中,根据当前区域设置,它将被格式化并显示为“1.485”或“1,485”。
如果我使用:
甚至
不调用 NumberFormat 并显示原始值。
I have noted that if I use this:
In a GSP page, it will be formatted and displayed like "1.485" or " 1,485" depending on the current locale.
If I use:
or even
Does not call NumberFormat and display the raw value.