Java Spring请求参数仅接受整数
我正在使用SpringRESTful端点,它接受页面范围(起始和结束页码)。我希望我的请求参数-pageStart和pageEnd只接受整数。当我通过邮递员传递'pageStart=a'时,我得到以下错误: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&
@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\']“}]}