Grails / Groovy:URL params(max,offset)当空白/字符串时抛出NumberFormatException

时间:2010-10-24 13:20:26

标签: url grails groovy params parseint

控制器中的

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

如果您输入以下网址

/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 个答案:

答案 0 :(得分:5)

看一下Release Notes for Grails 1.2引入了params和tag属性的null安全转换器。

你应该改变你的行..

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