【问题标题】:Unable to Create Spring Url mapping无法创建 Spring Url 映射
【发布时间】:2014-02-20 12:46:52
【问题描述】:

我正在研究 spring。我无法在“abc.com/firstName.lastName”sping 中为这个 url 创建映射。如果我写了这段代码

@RequestMapping(value = "/{path}", method = RequestMethod.GET, produces = "application/json")
@Timed
public void saveProfileMapping(@PathVariable String path)
{
    System.out.println("-------------getting Mapping--------------"+path);
} 

然后只获得名字,即姓氏在spring中没有获得。但是如果这样写

@RequestMapping(value = "/{firstName}.{lastName}", method = RequestMethod.GET, produces = "application/json")
@Timed
public void saveProfileMapping(@PathVariable String firstName,String lastName)
{
    System.out.println("-------------getting Mapping--------------"+firstName+lastName);
}

这里的结果相同,只得到名字。

请需要你的帮助..

提前致谢。

【问题讨论】:

  • 您的方法正在返回无效,因此请尝试使用 @ResponseStatus(value = HttpStatus.OK)
  • 感谢@V-spring 的回复,但方法没有给出任何异常,它对我来说工作正常,但无法使用此映射获取 lastname 的值。
  • 你试过@PathVariable String firstName,@PathVariable String lastName this or like @PathVariable("lastName") String lastName
  • 谢谢@V-spring...明白了............
  • 默认情况下RequestMappingHandlerMapping 会忽略最后一个. 之后的部分。所以确实你永远不会看到{lastName}。除此之外,您的映射也是错误的,您的参数没有用@PathVariable 注释。您需要配置RequestMappingHandlerAdapter 以包含. 之后的部分。

标签: java spring spring-mvc jhipster


【解决方案1】:

你需要PathVariables的:

...
public void saveProfileMapping(@PathVariable String firstName,@PathVariable String lastName)
...

希望有帮助!

【讨论】:

    【解决方案2】:

    Marten 正确地发现了问题。另一种(更简单)的解决方案是在@RequestMapping 中使用正则表达式,例如这匹配所有内容:

     @RequestMapping(value = "/{path:.*}")
     public void saveProfileMapping(@PathVariable String path)
     { ... } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 2017-10-12
      • 2016-05-17
      • 2016-01-02
      • 1970-01-01
      相关资源
      最近更新 更多