Spring请求params只接受整数

时间:2017-03-24 06:09:20

标签: java spring rest spring-mvc http-request-parameters

我正在开发一个spring restful端点,它接受页面范围(开始和结束页码)。我希望我的请求params- pageStart和pageEnd只接受整数。当我通过&page; 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;
    }

请求无效[无法转换类型&#39; java.lang.String&#39;的值要求的类型&#39; java.lang.Integer&#39 ;;嵌套异常是java.lang.NumberFormatException:对于输入字符串:\&#34; a \&#34;]

如何处理此异常并让用户知道他应该只传递整数?

1 个答案:

答案 0 :(得分:1)

你可以用两种方式处理它

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)使用String参数

使用String作为所有@PathVariable和@RequestParameter参数的类型,然后在handler方法中进行解析。