我对SpringFramework中的@PathVariable和@ModelAttribute感到困惑。我能否知道它们之间有什么区别?
答案 0 :(得分:4)
1)@PathVariable
注释,指示方法参数应绑定到URI模板变量
例如:您有一个这样的网址http:/myweb/transferfund/john/john123
@RequestMapping(value = "/transferfund/{user}/john123")
public String index(@PathVariable String user){
System.out.println("Logged User :"+user);
}
根据上面的示例,您可以使用@PathVariable
从URI中获取变量,在这种情况下将打印出john
。
您也可以像这样获取URI的另一部分;
@RequestMapping(value = "/transferfund/john/{userID}")
@RequestMapping(value = "/{transaction}/john/john123")
你甚至可以这样做:
@RequestMapping(value = "/{transaction}")
将捕获任何没有自己的@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>
在@RequestMapping
@RequestMapping(value = "/addUser")
public String index(@ModelAttribute("userInfo") User userinfo){
System.out.println("Registered User :"+userinfo.getUserName());
}
根据示例,系统将打印出Registered User : John Doe
但是你需要这个春天的taglib来使用@ModelAttribute
:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
玩得开心。
答案 1 :(得分:1)
<强> @PathVariable 强>
@PathVariable对动态URI非常有用。
单个参数的数量没有限制 方法。
<强> @ModelAttribute 强>