Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring请求参数仅接受整数_Java_Spring_Rest_Spring Mvc_Http Request Parameters - Fatal编程技术网

Java Spring请求参数仅接受整数

Java Spring请求参数仅接受整数,java,spring,rest,spring-mvc,http-request-parameters,Java,Spring,Rest,Spring Mvc,Http Request Parameters,我正在使用SpringRESTful端点,它接受页面范围(起始和结束页码)。我希望我的请求参数-pageStart和pageEnd只接受整数。当我通过邮递员传递'pageStart=a'时,我得到以下错误: @RequestMapping(value = "/{accNumber}/abc/xyz", method = RequestMethod.GET) @Loggable @ResponseBody public RestResponse<Class1&

我正在使用SpringRESTful端点,它接受页面范围(起始和结束页码)。我希望我的请求参数-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;
    }
@RequestMapping(value=“/{accNumber}/abc/xyz”,method=RequestMethod.GET)
@可通行
@应答器
公共Response getData(
@Loggable@PathVariable(value=“accNumber”)字符串accNumber,
@RequestParam(value=“pageStart”,required=false,defaultValue=“0”)整数pageStart,
@RequestParam(value=“pageEnd”,required=false,defaultValue=“10”)整数pageEnd,
HttpServletResponse)引发异常{
Class1=新的Class1();
class1=检索数据(账号、页面开始、页面结束);
RestResponse RestResponse=新的RestResponse(
第1类);
返回重响应;
}
请求无效[未能将“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;
    }

2) 使用字符串参数


使用字符串作为所有@PathVariable和@RequestParameter参数的类型,然后在处理程序方法内部进行解析

谢谢,@TharsanSivakumar First option将有助于解决此问题。但是考虑到第二个选项,如果我将请求参数设置为String,那么它将接受任何内容。我希望我的端点只接受整数,因为它是页面范围。我该怎么做呢?然后使用第一个选项,您可以在postman中提供的链接器中获得更多信息:{“errors”:[{“code”:“service.badRequest”,“description”:“请求无效”[未能将类型为'java.lang.String'的值转换为所需类型'java.lang.Integer';嵌套异常为java.lang.NumberFormatException:对于输入字符串:\'a\']“}]}