Grails / Groovy: URL-слова (MAX, OFFSET) NumberFormatexception брошено при пустых / строках
Вопрос
в контроллере
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)
Есть ли одна линия Groovy-ответ на проверку на параметрах NULL / String в формате URL?
Решение
Посмотреть на Отпустите ноты для 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
Не связан с StackOverflow