一、问题描述
使用Springboot JPA 做分页查询,报错Required String parameter 'xx' is not present,后端未接受到请求
二、解决方案:
使用的请求方法是GetMapping,这时候传不了参数,需要改为PostMapping才会有效
错误源码:
注意注解:@GetMapping
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.easylab.rentshop.controller; 2 3 import com.easylab.rentshop.base.BaseResource; 4 import com.easylab.rentshop.service.DepartmentService; 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.data.domain.Page; 7 import org.springframework.web.bind.annotation.*; 8 9 import java.util.Map; 10 11 /****************************** 12 * @author : liuyang 13 * <p>ProjectName:rent-shop </p> 14 * @ClassName : DepartmentController 15 * @date : 2018/6/13 0013 16 * @time : 15:31 17 * @createTime 2018-06-13 15:31 18 * @version : 2.0 19 * @description : 20 * 21 * 22 * 23 *******************************/ 24 25 @RestController 26 @RequestMapping("department") 27 public class DepartmentController { 28 29 30 @Autowired 31 private DepartmentService departmentService; 32 33 34 /** 35 * @param pageStr 36 * @param pageSizeStr 37 * @return Page 38 * <p> 39 * <p> 40 * required和defaultValue设置当请求没有参数的时候,默认设置参数值为1 41 * 采用String类型接受,防止传入abc这种情况导致程序死掉 42 */ 43 @GetMapping("/departmentPage") 44 public Object departmentPage(@RequestParam(value = "pageStr", required = false, defaultValue = "1") String pageStr, 45 @RequestParam(value = "pageSizeStr") String pageSizeStr) { 46 47 int pageNo = 1; 48 49 try { 50 pageNo = Integer.valueOf(pageStr); 51 52 if (pageNo < 1) { 53 pageNo = 1; 54 } 55 } catch (Exception e) { 56 } 57 58 int pageSize = 0; 59 60 try { 61 pageSize = Integer.valueOf(pageSizeStr); 62 63 if (pageSize < 1) { 64 pageSize = 5; 65 } 66 } catch (Exception e) { 67 } 68 69 Page page = departmentService.getPage(pageNo, pageSize); 70 71 return new BaseResource(page); 72 } 73 74 75 }
修改后:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package com.easylab.rentshop.controller; 2 3 import com.easylab.rentshop.base.BaseResource; 4 import com.easylab.rentshop.service.DepartmentService; 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.data.domain.Page; 7 import org.springframework.web.bind.annotation.*; 8 9 import java.util.Map; 10 11 /****************************** 12 * @author : liuyang 13 * <p>ProjectName:rent-shop </p> 14 * @ClassName : DepartmentController 15 * @date : 2018/6/13 0013 16 * @time : 15:31 17 * @createTime 2018-06-13 15:31 18 * @version : 2.0 19 * @description : 20 * 21 * 22 * 23 *******************************/ 24 25 @RestController 26 @RequestMapping("department") 27 public class DepartmentController { 28 29 30 @Autowired 31 private DepartmentService departmentService; 32 33 34 /** 35 * @param pageStr 36 * @param pageSizeStr 37 * @return Page 38 * <p> 39 * <p> 40 * required和defaultValue设置当请求没有参数的时候,默认设置参数值为1 41 * 采用String类型接受,防止传入abc这种情况导致程序死掉 42 */ 43 @PostMapping("/departmentPage") 44 public Object departmentPage(@RequestParam(value = "pageStr", required = false, defaultValue = "1") String pageStr, 45 @RequestParam(value = "pageSizeStr") String pageSizeStr) { 46 47 int pageNo = 1; 48 49 try { 50 pageNo = Integer.valueOf(pageStr); 51 52 if (pageNo < 1) { 53 pageNo = 1; 54 } 55 } catch (Exception e) { 56 } 57 58 int pageSize = 0; 59 60 try { 61 pageSize = Integer.valueOf(pageSizeStr); 62 63 if (pageSize < 1) { 64 pageSize = 5; 65 } 66 } catch (Exception e) { 67 } 68 69 Page page = departmentService.getPage(pageNo, pageSize); 70 71 return new BaseResource(page); 72 } 73 74 75 }
使用PostMan进行接口测试: