带有{}大括号的Spring MVC @Path变量

时间:2014-11-07 04:43:00

标签: java spring spring-mvc spring-boot

使用弹簧靴开发应用程序。在REST控制器中,我更喜欢使用路径变量(@PathVariabale注释)。我的代码获取路径变量,但它在网址中包含 {} 大括号。请任何人建议我解决这个问题

@RequestMapping(value = "/user/item/{loginName}", method = RequestMethod.GET)
public void getSourceDetails(@PathVariable String loginName) {
    try {
        System.out.println(loginName);
        // it print like this  {john}
    } catch (Exception e) {
        LOG.error(e);
    }
}

URL

http://localhost:8080/user/item/{john}

输入控制器

{john}

1 个答案:

答案 0 :(得分:41)

使用http://localhost:8080/user/item/john代替提交您的请求。

你给Spring一个值#34; {john}"到路径变量loginName,所以Spring用" {}"

来获取它

Web MVC framework表示

  

URI模板模式

     

URI模板可用于方便地访问a的选定部分   @RequestMapping方法中的URL。

     

URI模板是类似URI的字符串,包含一个或多个变量   名。 当您为这些变量替换值时,模板   成为URI 。建议的URI模板RFC定义了URI的方式   参数。例如,URI模板   http://www.example.com/users/ {userId} 包含变量userId 。   将值fred赋值给变量yield   http://www.example.com/users/fred

     

在Spring MVC中,您可以在方法上使用@PathVariable注释   将其绑定到URI模板变量的值的参数:

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
 public String findOwner(@PathVariable String ownerId, Model model) {
     Owner owner = ownerService.findOwner(ownerId);
     model.addAttribute("owner", owner);
     return "displayOwner"; 
  }
  

URI模板" /所有者/ {OWNERID}"指定变量名称   OWNERID。当控制器处理此请求时,值为   ownerId设置为URI的相应部分中找到的值。   例如,当一个请求进入/ owners / fred时,其值为   ownerId是弗雷德。