Ich habe einen Controller mit den folgenden Methoden:
@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) {
......
}
}
Ich habe erwartet, wann immer ich /application/employee/
würde es Suchseite zeigen und es tut. Die Seite mit den Mitarbeiterdetails wird jedoch nicht angezeigt, wenn ich eine Anfrage sende /application/emp/details/101
, es geht Suchseite anstelle von Detailseite. Das Protokoll zeigt unten:
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)]
Mein Verständnis war, wenn ich keine Unter-URLs anstelle von ** (was in der Klassenebene liegt) erwähne, würde es dauern getEmployeeInfoCriteria
d.h. /application/employee/
. Wenn ich eine Sub-URL erwähne, wie /application/employee/details/1001
würde es von gehandhabt werden getEmployeeDetailsById
. Was fehlt mir hier?
Antworten:
2 für die Antwort № 1Keine Notwendigkeit, ** in der Anforderungszuordnung auf Klassenebene zu verwenden, verwenden Sie einfach
@RequestMapping(value = "/employee/")
2 für die Antwort № 2
Der Platzhalter verhindert, dass die nächste URL aufgelöst wird. Werde es los.