Spring mvc @PathVariable

jam*_*mes 116 spring-mvc

你能给我一个简短的解释和一个@PathVariable在春季mvc 使用的样品吗?请详细说明您输入网址的方式?
我正在努力获得正确的网址来显示jsp页面.谢谢.

cod*_*der 206

你可以说,假设你想写一个网址来获取一些订单

www.mydomain.com/order/123
Run Code Online (Sandbox Code Playgroud)

其中123是orderId.

所以现在你将在spring mvc控制器中使用的url看起来像

/order/{orderId}
Run Code Online (Sandbox Code Playgroud)

现在可以将订单ID声明为路径变量

@RequestMapping(value = " /order/{orderId}", method=RequestMethod.GET)
public String getOrder(@PathVariable String orderId){
//fetch order
}
Run Code Online (Sandbox Code Playgroud)

如果您使用网址www.mydomain.com/order/123,则orderId变量将由弹簧值123填充

另请注意,PathVariable与requestParam不同,因为pathVariable是URL的一部分.使用请求参数的相同网址看起来像 www.mydomain.com/order?orderId=123

API DOC
Spring官方参考


小智 10

看看下面的代码片段.

@RequestMapping(value="/Add/{type}")
public ModelAndView addForm(@PathVariable String type ){
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("addContent");
    modelAndView.addObject("typelist",contentPropertyDAO.getType() );
    modelAndView.addObject("property",contentPropertyDAO.get(type,0) );
    return modelAndView;
}
Run Code Online (Sandbox Code Playgroud)

希望它有助于构建您的代码.


och*_*lad 6

如果您有包含路径变量的url,例如www.myexampl.com/item/12/update,其中12是id,create是您要用于指定执行intance的变量,使用单个表单进行更新和创建,你在控制器中执行此操作.

   @RequestMapping(value = "/item/{id}/{method}" , RequestMethod.GET)
    public String getForm(@PathVariable("id") String itemId ,  @PathVariable("method") String methodCall , Model model){
  if(methodCall.equals("create")){
    //logic
}
 if(methodCall.equals("update")){
//logic
}

return "path to your form";
}
Run Code Online (Sandbox Code Playgroud)