Grails / Groovy: URL-слова (MAX, OFFSET) NumberFormatexception брошено при пустых / строках

StackOverflow https://stackoverflow.com/questions/4008373

Вопрос

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

 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top