在学习网上项目时遇到了这个问题
报错信息:
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalStateException: Ambiguous handler methods mapped for '/admin/employee/2': {public com.sky.result.Result com.sky.controller.admin.EmployeeController.pageQuery(com.sky.dto.EmployeePageQueryDTO), public com.sky.result.Result com.sky.controller.admin.EmployeeController.getById(java.lang.Long)}] with root cause
查询无果后,发现问题出现在同一个controller类的两个方法当中,发现这两个方法都使用了一个路径请求参数,这使得Servelt无法判别使用哪个方法去完成get请求。而其实查询功能并不需要使用路径参数,这里粗心出错了,记录此问题
@GetMapping("/{page}")
@ApiOperation("分页查询员工")
public Result<PageResult> pageQuery(EmployeePageQueryDTO employeePageQueryDTO){
log.info("分页查询员工: {}" ,employeePageQueryDTO);
PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);
return Result.success(pageResult);
}
@GetMapping("/{id}")
@ApiOperation("根据id查询员工信息")
public Result<Employee> getById(@PathVariable Long id){
log.info("根据id查询员工信息:{}",id);
Employee employee = employeeService.getById(id);
return Result.success(employee);
}