避免 Grails 格式化

发布于 2024-10-17 04:14:46 字数 657 浏览 3 评论 0原文

我在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

月亮邮递员 2024-10-24 04:14:46

中所述Grails 文档的简单类型转换器部分,您可以将传入参数从 String 转换为 int,如下所示:

def i = params.int('id')

As described in the Simple Type Converters section of the Grails documentation, you can convert incoming parameters from String to int like so:

def i = params.int('id')
巾帼英雄 2024-10-24 04:14:46

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

def i = (params.id as int)

I often use groovy syntax to do this:

def i = (params.id as int)
空名 2024-10-24 04:14:46

使用 Integer.parseInt 而不是 Integer.valueOf

Use Integer.parseInt instead of Integer.valueOf

春风十里 2024-10-24 04:14:46

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

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

在 GSP 页面中,根据当前区域设置,它将被格式化并显示为“1.485”或“1,485”。

如果我使用:

${myBean.aLongField}

甚至

${myBean.aLongField.toString() }

不调用 NumberFormat 并显示原始值。

I have noted that if I use this:

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

In a GSP page, it will be formatted and displayed like "1.485" or " 1,485" depending on the current locale.

If I use:

${myBean.aLongField }

or even

${myBean.aLongField.toString() }

Does not call NumberFormat and display the raw value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文