Spring 请求参数只接受整数
Spring request params to accept only Integers
我正在开发一个 spring restful 端点,它接受页面范围(开始和结束页码)。我希望我的请求参数 pageStart 和 pageEnd 只接受整数。当我通过邮递员传递 'pageStart = a' 时,出现以下错误:
@RequestMapping(value = "/{accNumber}/abc/xyz", method = RequestMethod.GET)
@Loggable
@ResponseBody
public RestResponse<Class1> getData(
@Loggable @PathVariable(value = "accNumber") String accNumber,
@RequestParam(value = "pageStart", required = false, defaultValue = "0") Integer pageStart,
@RequestParam(value = "pageEnd", required = false, defaultValue = "10") Integer pageEnd,
HttpServletResponse response) throws Exception {
Class1 class1 = new Class1();
class1 = retrieveData(accNumber, pageStart, pageEnd);
RestResponse<Class1> restResponse = new RestResponse<Class1>(
class1);
return restResponse;
}
请求无效[未能将类型 'java.lang.String' 的值转换为所需类型 'java.lang.Integer';嵌套异常是 java.lang.NumberFormatException:对于输入字符串:\"a\"]
如何处理这个异常并让用户知道他应该只传递整数?
您可以通过两种方式处理
1) 使用异常处理方法
控制器中有一个方法
@ExceptionHandler({Exception.class})
public ModelAndView handleException(Exception ex) {
ModelAndView model = new ModelAndView("Exception");
model.addObject("exception", ex.getMessage());
return model;
}
http://www.codejava.net/frameworks/spring/how-to-handle-exceptions-in-spring-mvc
2) 使用字符串参数
使用字符串作为所有@PathVariable 和@RequestParameter 参数的类型,然后在处理程序方法中进行解析。
我正在开发一个 spring restful 端点,它接受页面范围(开始和结束页码)。我希望我的请求参数 pageStart 和 pageEnd 只接受整数。当我通过邮递员传递 'pageStart = a' 时,出现以下错误:
@RequestMapping(value = "/{accNumber}/abc/xyz", method = RequestMethod.GET)
@Loggable
@ResponseBody
public RestResponse<Class1> getData(
@Loggable @PathVariable(value = "accNumber") String accNumber,
@RequestParam(value = "pageStart", required = false, defaultValue = "0") Integer pageStart,
@RequestParam(value = "pageEnd", required = false, defaultValue = "10") Integer pageEnd,
HttpServletResponse response) throws Exception {
Class1 class1 = new Class1();
class1 = retrieveData(accNumber, pageStart, pageEnd);
RestResponse<Class1> restResponse = new RestResponse<Class1>(
class1);
return restResponse;
}
请求无效[未能将类型 'java.lang.String' 的值转换为所需类型 'java.lang.Integer';嵌套异常是 java.lang.NumberFormatException:对于输入字符串:\"a\"]
如何处理这个异常并让用户知道他应该只传递整数?
您可以通过两种方式处理
1) 使用异常处理方法
控制器中有一个方法
@ExceptionHandler({Exception.class})
public ModelAndView handleException(Exception ex) {
ModelAndView model = new ModelAndView("Exception");
model.addObject("exception", ex.getMessage());
return model;
}
http://www.codejava.net/frameworks/spring/how-to-handle-exceptions-in-spring-mvc
2) 使用字符串参数
使用字符串作为所有@PathVariable 和@RequestParameter 参数的类型,然后在处理程序方法中进行解析。