我对 SpringFramework 中的 @PathVariable 和 @ModelAttribute 感到困惑。我可以知道它们之间有什么区别吗?
1)@PathVariable
指示方法参数应绑定到 URI 模板变量的注释
例如:您有一个像这样的 URLhttp:/myweb/transferfund/john/john123
@RequestMapping(value = "/transferfund/{user}/john123")
public String index(@PathVariable String user){
System.out.println("Logged User :"+user);
}
Run Code Online (Sandbox Code Playgroud)
根据上面的示例,您可以从 URI 获取变量@PathVariable,在本例中将打印出john。您还可以像这样获取 URI 的另一部分;
@RequestMapping(value = "/transferfund/john/{userID}")
@RequestMapping(value = "/{transaction}/john/john123")
Run Code Online (Sandbox Code Playgroud)
你甚至可以这样做:
@RequestMapping(value = "/{transaction}")
Run Code Online (Sandbox Code Playgroud)
它将捕获任何没有自己的 URl@RequestMapping
2)@ModelAttribute
将方法参数或方法返回值绑定到公开给 Web 视图的命名模型属性的注释
例如:您有一种形式:
<form:form action="/addUser" modelAttribute="userInfo">
<form:input path="name" value="John Doe">
<form:input path="id" value="john123">
</form:form>
Run Code Online (Sandbox Code Playgroud)
而在你的@RequestMapping
@RequestMapping(value = "/addUser")
public String index(@ModelAttribute("userInfo") User userinfo){
System.out.println("Registered User :"+userinfo.getUserName());
}
Run Code Online (Sandbox Code Playgroud)
根据示例,系统将打印出Registered User : John Doe
But you need this spring taglib to use @ModelAttribute:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
Run Code Online (Sandbox Code Playgroud)
玩得开心。
| 归档时间: |
|
| 查看次数: |
3934 次 |
| 最近记录: |