Spring mvc @PathVariable
Posted
技术标签:
【中文标题】Spring mvc @PathVariable【英文标题】: 【发布时间】:2013-11-17 04:43:56 【问题描述】:你能给我一个简单的解释和一个在spring mvc中使用@PathVariable
的例子吗?请附上您输入网址的方式?
我正在努力获得正确的 url 来显示 jsp 页面。谢谢。
【问题讨论】:
通过 spring mvc 控制器显示 jsp 是通过视图或说ModelAndView
完成的。 @PathVariable
注解用于在控制器端获取变量名及其值。例如www.abcd.com/api/value=34455&anotherValue=skjdfjhks 这里 value 和 anotherValue 是变量,您可以使用 @PathVariable("value") int value 和 @PathVariable ("anotherValue")String anotherValue
【参考方案1】:
看看下面的代码sn-p。
@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;
希望它有助于构建您的代码。
【讨论】:
我不熟悉模型和视图。呵呵。谢谢顺便说一句..期待在我的项目中实施这个..但我需要先完成它。 :) 我认为你需要编写@PathVariable("type") 来绑定路径。 我想拥有 www.mydomain.com/order/abc.def,现在在控制器中我只得到 abc 得到它使用正则表达式 [a-zA-z0-9.]【参考方案2】:如果您有带有路径变量的 url,例如 www.myexampl.com/item/12/update,其中 12 是 id,create 是您要用于指定执行的变量,例如使用单个表单执行更新和创建,您在控制器中执行此操作。
@PostMapping(value = "/item/id/method")
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";
【讨论】:
此机制确保路径变量与给定变量绑定。【参考方案3】:它是用于映射/处理动态 URI 的注释之一。您甚至可以为 URI 动态参数指定正则表达式以仅接受特定类型的输入。
例如,如果使用唯一编号检索图书的 URL 是:
URL:http://localhost:8080/book/9783827319333
可以使用@PathVariable 获取 URL 最后表示的数字,如下所示:
@RequestMapping(value="/book/ISBN", method= RequestMethod.GET)
public String showBookDetails(@PathVariable("ISBN") String id,
Model model)
model.addAttribute("ISBN", id);
return "bookDetails";
简而言之,它只是在 Spring 中从 HTTP 请求中提取数据。
【讨论】:
这个表格是什么样子的?我可以使用其中一个输入值来指定 ISBN 值吗?如果是,如何构造表单参数 th:action 的完整 URL?【参考方案4】:@PathVariable
用于从 URL 中获取值
例如:问一些问题
www.***.com/questions/19803731
这里有一些问题 id
作为 URL 中的参数传递
现在要在controller
中获取这个值,您只需在方法参数中传递@PathVariable
@RequestMapping(value = " /questions/questionId", method=RequestMethod.GET)
public String getQuestion(@PathVariable String questionId)
//return question details
【讨论】:
这个表格是什么样子的?我可以使用其中一个输入值来指定 ISBN 值吗?如果是,如何构造表单参数 th:action 的完整 URL?【参考方案5】:指示方法参数应绑定到 URI 模板变量的注释。支持 RequestMapping 带注释的处理程序方法。
@RequestMapping(value = "/download/documentId", method = RequestMethod.GET)
public ModelAndView download(@PathVariable int documentId)
ModelAndView mav = new ModelAndView();
Document document = documentService.fileDownload(documentId);
mav.addObject("downloadDocument", document);
mav.setViewName("download");
return mav;
【讨论】:
【参考方案6】:假设你想写一个url来获取一些订单,你可以说
www.mydomain.com/order/123
其中 123 是 orderId。
所以现在你将在 spring mvc 控制器中使用的 url 看起来像
/order/orderId
现在可以将订单id声明为路径变量
@RequestMapping(value = " /order/orderId", method=RequestMethod.GET)
public String getOrder(@PathVariable String orderId)
//fetch order
如果您使用 url www.mydomain.com/order/123,则 orderId 变量将由 spring 填充值 123
另请注意,PathVariable 与 requestParam 不同,因为 pathVariable 是 URL 的一部分。
使用请求参数的相同 url 看起来像 www.mydomain.com/order?orderId=123
API DOC Spring Official Reference
【讨论】:
在使用 pathVariable。我需要导入一些东西吗?或任何依赖?谢谢。 只需要import PathVariable注解import org.springframework.web.bind.annotation.PathVariable 是的,请提供一些详细信息,您尝试做什么以及问题是什么 ***.com/questions/19804202/….. 这是代码 我想要 www.mydomain.com/order/abc.def,现在在控制器中我只得到 abc【参考方案7】:让我们假设您点击的网址为 www.example.com/test/111 。 现在您必须将值 111(它是动态的)检索到您的控制器方法。有时您将使用 @PathVariable,如下所示:
@RequestMapping(value = " /test/testvalue", method=RequestMethod.GET)
public void test(@PathVariable String testvalue)
//you can use test value here
所以变量值是从url中检索出来的
【讨论】:
【参考方案8】:看看下面的代码sn-p。
@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 Project on GitLab
【讨论】:
以上是关于Spring mvc @PathVariable的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC学习—MVC的介绍以及Spring MVC的入门案例
spring mvc中 Circular view path 问题