Grails/Groovy: URL Params (max, offset) NumberFormatexception jogado quando em branco/strings
Pergunta
no controlador
params.max = Math.min(params?.max?.toInteger() ?: 10, 20)
params.offset = params?.offset?.toInteger() ?: 0
Se você entrar nos seguintes URLs
/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)
Existe uma resposta Groovy de uma linha para verificar os caracteres NULL/String nos parâmetros URL?
Solução
Dê uma olhada no Notas de lançamento para Grails 1.2 onde conversores seguros nulos para parâmetros e atributos de tags foram introduzidos.
Você deve mudar suas linhas ..
params.max = Math.min(params?.max?.toInteger() ?: 10, 20)
params.offset = params?.offset?.toInteger() ?: 0
.. para o seguinte código:
params.max = Math.min(params.int('max') ?: 10, 20)
params.offset = params.int('offset') ?: 0
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow