@PathVariable和@ModelAttribute之间的区别

时间:2016-05-19 06:23:05

标签: spring spring-mvc

我对SpringFramework中的@PathVariable和@ModelAttribute感到困惑。我能否知道它们之间有什么区别?

2 个答案:

答案 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

的URl

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

  1. @PathVariable对动态URI非常有用。

  2. 单个参数的数量没有限制 方法。

  3. 您可以在一个中使用多个动态参数 方法的参数。
  4. @PathVariable参数可以是任何简单的 类型如int,long,Date等。
  5. <强> @ModelAttribute

    1. 要绑定的模型属性的名称。