Spring mvc @PathVariable

你可以给我一个简单的解释和春季mvc中使用@PathVariable的示例? 请包括如何inputurl?
我正在努力获得正确的url显示jsp页面。 谢谢。

假设你想写一个url来获取一些命令,你可以说

 www.mydomain.com/order/123 

123是orderId。

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

 /order/{orderId} 

现在,可以将订单ID声明为pathvariables

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

如果您使用url http://www.mydomain.com/order/123,则orderIdvariables将在春季由值123填充;

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

API DOC
春季官方参考

看看下面的代码片段。

 @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; } 

希望它有助于构build你的代码。 阿树

如果你有pathvariables的URL,例如www.myexampl.com/item/12/update,其中12是id,create是你想要用来指定执行的variables,以便使用单个表单进行更新,创build,你在你的控制器中这样做。

  @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"; } 

让我们假设您访问www.example.com/test/111url。 现在你必须检索值111(这是dynamic的)到你的控制器方法。当你将使用@PathVariable如下:

 @RequestMapping(value = " /test/{testvalue}", method=RequestMethod.GET) public void test(@PathVariable String testvalue){ //you can use test value here } 

所以variables值是从URL中检索的

 @RequestMapping(value = "/download/{documentId}", method = RequestMethod.GET) public ModelAndView download(@PathVariable int documentId) { ModelAndView mav = new ModelAndView(); Document document = documentService.fileDownload(documentId); mav.setViewName("download"); mav.addObject("downloadDocument", document); return mav; } 

@RequestMapping(value =“/ download / { documentId }”== @PathVariable int documentId

使用Spring 4,你可以使用更方便的@GetMapping注解。 @GetMapping是一个组合的注释,作为@RequestMapping(method = RequestMethod.GET)的快捷方式,

@GetMapping(“/ request / {id}”)public String getRequest(@PathVariable String id){

用于从url获取值的@PathVariable

例如:得到一些问题

 www.stackoverflow.com/questions/19803731 

这里有一些问题id作为url中的parameter passing

现在要在controller获取此值,您只需传递@PathVariable和方法参数即可

 @RequestMapping(value = " /questions/{questionId}", method=RequestMethod.GET) public String getQuestion(@PathVariable String questionId){ //return question details } 

看看下面的代码片段。

 @RequestMapping(value = "edit.htm", method = RequestMethod.GET) public ModelAndView edit(@RequestParam("id") String id) throws Exception { ModelMap modelMap = new ModelMap(); modelMap.addAttribute("user", userinfoDao.findById(id)); return new ModelAndView("edit", modelMap); } 

如果你想完整的项目,看看它是如何工作的,然后从下面的链接下载链接: –

UserInfo项目在GitLab上