Избегайте форматирования граалей - PullRequest
0 голосов
/ 11 февраля 2011

У меня проблема с приложением 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 ]

3 голосов
/ 11 февраля 2011

Как описано в разделе Простые преобразователи типов документации Grails , вы можете преобразовать входящие параметры из String в int следующим образом:

def i = params.int('id')
1 голос
/ 12 февраля 2011

Я часто использую Groovy синтаксис для этого:

def i = (params.id as int)
0 голосов
/ 18 февраля 2011

Я заметил, что если я использую это:

$ {fieldValue (фасоль: myBean, поле: 'aLongField')}

На странице GSP она будет отформатирована и отображаться как «1,485» или «1,485» в зависимости от текущей локали.

Если я использую:

$ {myBean.aLongField}

или даже

$ {myBean.aLongField.toString ()}

Не вызывает NumberFormat и не отображает необработанное значение.

0 голосов
/ 11 февраля 2011

Используйте Integer.parseInt вместо Integer.valueOf

...