【发布时间】:2018-12-28 17:43:27
【问题描述】:
也许我遗漏了一些东西,但我不能通过一个小问题
我正在构建一个简单的 Spring Boot 应用程序,并且我正在使用 MVC 控制器:@Controller 注释
在我的控制器中我有
@GetMapping("/trainee")
public String trainee(@RequestParam("id") long id, Model model) {
要输入该方法,我需要准备这样的网址:/trainne?id=1,我更喜欢/trainee/1
我知道第二个选项可以使用 REST 控制器,但我不能使用它,因为它不支持模板。我可以用 mvc 控制器制作一个漂亮的 REST 类型的 url 吗?
我也会补充
@Controller
@RequestMapping("/trainees")
public class TraineeController {
当我使用 @Ken Chan 建议的映射时,我会收到
2018-12-28 18:49:50.740 DEBUG 5960 --- [nio-8080-exec-5] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Looking up handler method for path /trainees/trainee/1
2018-12-28 18:49:50.740 DEBUG 5960 --- [nio-8080-exec-5] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Did not find handler method for [/trainees/trainee/1]
2018-12-28 18:49:50.740 DEBUG 5960 --- [nio-8080-exec-5] a.e.w.s.ControllerEndpointHandlerMapping : Looking up handler method for path /trainees/trainee/1
2018-12-28 18:49:50.740 DEBUG 5960 --- [nio-8080-exec-5] a.e.w.s.ControllerEndpointHandlerMapping : Did not find handler method for [/trainees/trainee/1]
2018-12-28 18:49:50.740 DEBUG 5960 --- [nio-8080-exec-5] o.s.b.w.s.f.OrderedRequestContextFilter : Bound request context to thread: org.apache.catalina.connector.RequestFacade@6c120aea
//根据@Ben配置添加全调试
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Looking up handler method for path /trainees/trainee/1
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Did not find handler method for [/trainees/trainee/1]
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] a.e.w.s.ControllerEndpointHandlerMapping : Looking up handler method for path /trainees/trainee/1
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] a.e.w.s.ControllerEndpointHandlerMapping : Did not find handler method for [/trainees/trainee/1]
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /trainees/trainee/1
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] s.w.s.m.m.a.RequestMappingHandlerMapping : Did not find handler method for [/trainees/trainee/1]
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] o.s.w.s.handler.SimpleUrlHandlerMapping : Matching patterns for request [/trainees/trainee/1] are [/**]
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] o.s.w.s.handler.SimpleUrlHandlerMapping : URI Template variables for request [/trainees/trainee/1] are {}
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapping [/trainees/trainee/1] to HandlerExecutionChain with handler [ResourceHttpRequestHandler [locations=[class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/], ServletContext resource [/]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@470d91ab]]] and 1 interceptor
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] o.s.b.w.s.f.OrderedRequestContextFilter : Bound request context to thread: org.apache.catalina.connector.RequestFacade@3b6c5f54
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/trainees/trainee/1]
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Looking up handler method for path /trainees/trainee/1
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Did not find handler method for [/trainees/trainee/1]
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] a.e.w.s.ControllerEndpointHandlerMapping : Looking up handler method for path /trainees/trainee/1
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] a.e.w.s.ControllerEndpointHandlerMapping : Did not find handler method for [/trainees/trainee/1]
2018-12-28 21:22:43.113 DEBUG 13352 --- [nio-8080-exec-9] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /trainees/trainee/1
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] s.w.s.m.m.a.RequestMappingHandlerMapping : Did not find handler method for [/trainees/trainee/1]
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.w.s.handler.SimpleUrlHandlerMapping : Matching patterns for request [/trainees/trainee/1] are [/**]
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.w.s.handler.SimpleUrlHandlerMapping : URI Template variables for request [/trainees/trainee/1] are {}
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapping [/trainees/trainee/1] to HandlerExecutionChain with handler [ResourceHttpRequestHandler [locations=[class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resource [public/], ServletContext resource [/]], resolvers=[org.springframework.web.servlet.resource.PathResourceResolver@470d91ab]]] and 1 interceptor
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : Last-Modified value for [/trainees/trainee/1] is: -1
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : Successfully completed request
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.b.w.s.f.OrderedRequestContextFilter : Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@3b6c5f54
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : DispatcherServlet with name 'dispatcherServlet' processing GET request for [/error]
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Looking up handler method for path /error
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Did not find handler method for [/error]
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] a.e.w.s.ControllerEndpointHandlerMapping : Looking up handler method for path /error
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] a.e.w.s.ControllerEndpointHandlerMapping : Did not find handler method for [/error]
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] s.w.s.m.m.a.RequestMappingHandlerMapping : Looking up handler method for path /error
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] s.w.s.m.m.a.RequestMappingHandlerMapping : Returning handler method [public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)]
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : Last-Modified value for [/error] is: -1
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.w.s.v.ContentNegotiatingViewResolver : Requested media types are [text/html, text/html;q=0.8] based on Accept header types and producible media types [text/html])
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.w.s.v.ContentNegotiatingViewResolver : Returning [org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$SpelView@517289db] based on requested media type 'text/html'
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : Rendering view [org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration$SpelView@517289db] in DispatcherServlet with name 'dispatcherServlet'
2018-12-28 21:22:43.128 DEBUG 13352 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet : Successfully completed request
【问题讨论】:
-
这有什么问题:
@GetMapping(value = " /trainee/{id}"和public String trainee(@ PathVariable("id") long id, Model model)? -
@KenChan 我已经更新了我的帖子。我不想说您的解决方案有问题,但它不起作用。我已经试过了(很抱歉我应该提到)
标签: spring spring-mvc spring-boot url