有ModelAttribute注解的方法会在每个目标方法执行前被Spring MVC调用
以下代码模拟修改数据库中的个人信息,其中password字段为不能修改字段。
User类
package com.lee;
public class User {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private String username;
private String password;
private String email;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + ", email=" + email + ", age="
+ age + "]";
}
public User(int id, String username, String password, String email, int age) {
super();
this.id = id;
this.username = username;
this.password = password;
this.email = email;
this.age = age;
}
public User(){
}
}
index.jsp页面
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="testModelAttributes" method="POST">
<input type="hidden" name="id" value="1">
username:<input type="text" name="username" value="Tom"/><br>
e-mail:<input type="text" name="email" value="[email protected]"><br>
age:<input type="text" name="age" value="15"><br>
<input type="submit" value="submit">
</form>
</body>
</html>
测试方法
public class Hello {
/**
* 在没有ModelAttribute注解的getUser方法的时候,修改完成后的数据中password为null
* 加上ModelAttribute注解的getUser方法,password即可获取到值。
*/
@ModelAttribute
public void getUser(@RequestParam("id") Integer id, Map<String, Object> map){
if(id != null){
User user = new User(1, "Tom", "123456789", "[email protected]", 15);
System.out.println("从数据库取出对象" + user);
map.put("user", user);
}
}
@RequestMapping("/testModelAttributes")
public String testModelAttributes(User user){
System.out.println("修改:" + user);
return "success";
}
}
在没有ModelAttribute注解的getUser方法的时候,修改完成后的数据中password为null,加上ModelAttribute注解的getUser方法,password即可获取到值。