Grails / Groovy: параметры URL (макс., Смещение) NumberFormatException выдается, когда пусто / строки - PullRequest
1 голос
/ 24 октября 2010

в контроллере

 params.max = Math.min(params?.max?.toInteger() ?: 10, 20)
 params.offset = params?.offset?.toInteger() ?: 0

если вы введете следующие URL-адреса

/books?offset=10&max=              //error
/books?offset=10&max=sdf          //error
/books?offset=&max=10            //works
/books?offset=adsfa&max=10      //error


java.lang.NumberFormatException: For input string: "asdf"

        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

        at java.lang.Integer.parseInt(Integer.java:449)

        at java.lang.Integer.valueOf(Integer.java:554)

Существует ли однострочный простой ответ для проверки нулевых / строковых символов в параметрах URL?

1 Ответ

5 голосов
/ 24 октября 2010

Ознакомьтесь с примечаниями к выпуску для Grails 1.2 , в которых были представлены нулевые безопасные преобразователи для параметров и атрибутов тегов.

Вы должны изменить свои строки ..

params.max = Math.min(params?.max?.toInteger() ?: 10, 20)
params.offset = params?.offset?.toInteger() ?: 0

.. к следующему коду:

params.max = Math.min(params.int('max') ?: 10, 20)
params.offset = params.int('offset') ?: 0
...