spring mvc中的@ModelAttribute注解示例介紹
前言
本文介紹在spring mvc中非常重要的注解@ModelAttribute.這個注解可以用在方法參數(shù)上,或是方法聲明上。這個注解的主要作用是綁定request或是form參數(shù)到模型對象??梢允褂帽4嬖趓equest或session中的對象來組裝模型對象。注意,被@ModelAttribute注解的方法會在controller方法(@RequestMapping注解的)之前執(zhí)行。因為模型對象要先于controller方法之前創(chuàng)建。
請看下面的例子
- ModelAttributeExampleController.java 是controller類,同時包含@ModelAttribute 方法。
- UserDetails.java是本例中的模型對象
- 最后是spring的配置文件
//ModelAttributeExampleController.java
package javabeat.net;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class ModelAttributeExampleController {
@Autowired
private UserDetails userDetails;
@RequestMapping(value="/modelexample")
public String getMethod(@ModelAttribute UserDetails userDetails){
System.out.println("User Name : " + userDetails.getUserName());
System.out.println("Email Id : " + userDetails.getEmailId());
return "example";
}
//This method is invoked before the above method
@ModelAttribute
public UserDetails getAccount(@RequestParam String user, @RequestParam String emailId){
System.out.println("User Value from Request Parameter : " + user);
userDetails.setUserName(user);
userDetails.setEmailId(emailId);
return userDetails;
}
}
//UserDetails.java
package javabeat.net;
public class UserDetails {
private String userName;
private String emailId;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getEmailId() {
return emailId;
}
public void setEmailId(String emailId) {
this.emailId = emailId;
}
}
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jms="http://www.springframework.org/schema/jms" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd"> <context:component-scan base-package="org.spring.examples" /> <bean id="userDetails" class="org.spring.examples.UserDetails"/> </beans>
- 上面的例子,getAccount方法使用@ModelAttribute注解。這意味著方法會在controller的方法之前執(zhí)行。這個方法會使用request的參數(shù)設置模型對象。這是一種在方法中設置值的途徑。
- 另一種@ModelAttribute注解的使用方法,是用在方法的參數(shù)上。在調用方法的時候,模型的值會被注入。這在實際使用時非常簡單。將表單屬性映射到模型對象時,這個注解非常有用。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

