У мене є контролер із методами, наведеними нижче:
@Controller
@RequestMapping(value = "/employee/**")
public class EmployeeInfoController{
@RequestMapping(method = RequestMethod.GET)
public ModelAndView getEmployeeInfoCriteria(@ModelAttribute("employeeInfoParam") EmployeeInfoParam employeeInfoParam) {
.....
}
@RequestMapping(value = "/details/{empId}", method = RequestMethod.GET)
public ModelAndView getEmployeeDetailsById(@PathVariable String empId) {
......
}
}
Я очікував щоразу, коли я /application/employee/
, він показав би сторінку пошуку, і це робить. Але це не відображає сторінку з даними про працівника, коли я подаю запит /application/emp/details/101
, вона переходить на сторінку пошуку замість сторінки деталей. Журнал відображається нижче:
09:45:20,937 INFO [STDOUT] DEBUG [RequestMappingHandlerMapping:229] - Looking up handler method for path /employee/details/400000000022161
09:45:20,938 INFO [STDOUT] TRACE [RequestMappingHandlerMapping:267] - Found 2 matching mapping(s) for [/employee/details/400000000022161] : [{[/employee/**],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}, {[/employee/**/details/{empId}],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}]
09:45:20,939 INFO [STDOUT] DEBUG [RequestMappingHandlerMapping:234] - Returning handler method [public org.springframework.web.servlet.ModelAndView com.application.web.controller.EmployeeInfoController.getEmployeeInfoCriteria(com.application.web.form.EmployeeInfoParam)]
Я зрозумів: якщо я не згадаю жодних додаткових URL-адрес замість ** (що є на рівні класу), це займе getEmployeeInfoCriteria
тобто /application/employee/
. Якщо я згадаю суб-адресу, наприклад /application/employee/details/1001
, це буде обробляти getEmployeeDetailsById
. Що мені тут не вистачає?
Відповіді:
2 для відповіді № 1немає необхідності використовувати ** у відображенні запитів на рівні класу, просто використовуйте
@RequestMapping(value = "/employee/")
2 для відповіді № 2
Узагальнюючий знак заважає йому вирішити наступну URL-адресу. Позбутися цього.