【问题标题】:@RequestMapping does not work on type and method in Spring 2.5@RequestMapping 不适用于 Spring 2.5 中的类型和方法
【发布时间】:2013-03-30 09:37:41
【问题描述】:

我最近一直在阅读 Spring 3.2,现在我正在使用 Spring 2.5 尝试以下代码。根据我的阅读,这应该意味着它应该映射profile/tags/me。然而事实并非如此。它只是抛出一个No mapping found for HTTP request with URI ...。代码有什么问题,或者 Spring 2.5 不像 Spring 3 那样工作?

使用 Spring 2.5 时的问题

@Controller
@RequestMapping("/profile/tags")
public class ProfileController { ... }

这是 ProfileController 类中的方法:

@RequestMapping(value = "/me", method = RequestMethod.GET)    
public String show(@RequestParam final long id, final ModelMap model) { ... }

【问题讨论】:

  • 启动服务器时,您看到控制器已加载?
  • 你的请求/profile/tags/me是否有一个叫id的参数?例如:/profile/tags/me?id=3
  • @ArunPJohny 是的,路径看起来像这样。它以 id 作为参数。
  • 你能用硬编码的 id 值试试吗
  • 能否也分享完整的错误信息No mapping found for HTTP request with URI ...

标签: java spring jakarta-ee spring-mvc


【解决方案1】:

根据Spring documentation,如果您的意思是接收此请求参数,我想您缺少接收请求参数所需的配置:

@RequestMapping(value = "/me/{id}", method = RequestMethod.GET)    
public String show(@RequestParam("id") final long id, final ModelMap model) { ... }

或者你应该删除RequestParam

春季 2.5 更新

此外,由于您使用的是 Spring 2.5,请确保您已按预期方式配置了 DispatcherServlet13.11 部分,第 1、2 和 3 小节。总结:

  1. 应告知 DispatcherServlet 加载带注释的 RequestMappings。
  2. 应告知 DispatcherServlet 加载 Controller 注释。
  3. 不确定,但您可能需要优化用于请求映射的路径。

希望这会有所帮助。

【讨论】:

  • 这是我创建的链接:<a href="/profile/tags/me?id=${id}">Me</a>,我没有设法让它与您的答案一起使用。
  • ?id=${id} 的格式是“QueryParam”。要将其作为“RequestParam”,您应该使用.../tags/me/${id}
  • 您也可以尝试this 来验证您的链接是否符合预期?还是直接去http://yourserver/yourapp/profile/tags/me/SOMEID
  • 更新了答案。我试图更详细地阅读差异,希望这会有所帮助。
  • 这很奇怪。我得到了提到的必需豆等。方法上的 RequestMapping 注释用于指定方法,例如 GET、POST。但价值似乎不被认可。至少不能与类级别的请求映射一起使用。
猜你喜欢
  • 2020-03-19
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 2018-11-06
  • 2013-09-07
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多