JSP頁面表單信息:
<form action="springmvc/testmodelattribute" method="post">
id:<input type="hidden" name="id" value="1"> <br>
username: <input type="text" name="username" value="miwa"> <br>
email:<input type="text" name="email" value="abc.miwa"> <br>
age:<input type="text" name="age" value="20"> <br>
<input type="submit" value="submit">
springmvc handler 相關代碼:
@Controller
@RequestMapping("/springmvc")
public class gloomy {
@ModelAttribute
public void getUser(@RequestParam(value="id ",required = false) Integer id,Map<String , Object> map ){
if(id != null){
User user = new User("miwa", id, "123456", "abc.miwa", 20);
System.out.println("獲取一個對象"+user);
map.put("user", user);
}
System.out.println("我在這裡");
}
@RequestMapping("/testmodelattribute")
public String testmodelattribute( User user){
System.out.println("修改"+user);
return "success";
}
}
POJO代碼:
public class User {
private String username;
private Integer id;
private String password;
private String email;
private int age;
private Adress adress;
public User(String username, Integer id, String password, String email,
int age) {
super();
this.username = username;
this.id = id;
this.password = password;
this.email = email;
this.age = age;
}
public User(String username, String password, String email, int age) {
super();
this.username = username;
this.password = password;
this.email = email;
this.age = age;
}
public Adress getAdress() {
return adress;
}
public int getAge() {
return age;
}
public String getEmail() {
return email;
}
public Integer getId() {
return id;
}
public String getPassword() {
return password;
}
public String getUsername() {
return username;
}
public void setAdress(Adress adress) {
this.adress = adress;
}
public void setAge(int age) {
this.age = age;
}
public void setEmail(String email) {
this.email = email;
}
public void setId(Integer id) {
this.id = id;
}
public void setPassword(String password) {
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String toString() {
return "User [username=" + username + ", id=" + id + ", password="
+ password + ", email=" + email + ", age=" + age + "]";
}
異常信息:
嚴重: Servlet.service() for servlet [springDispatcherServlet] in context with path [/SpringMVC] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.gloomy.springmvc.pojos.User]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.gloomy.springmvc.pojos.User.<init>()] with root cause
java.lang.NoSuchMethodException: com.gloomy.springmvc.pojos.User.()
Spring注入屬性時通常是根據無參構造函數創建對象,然後調用類的各個屬性的getter和setter完成成員變量賦值的。
所以需要User類提供一個無參構造函數。