SpringMVC_10_ 处理模型数据(二)之 ModelAttribute
问题描述:
当我想要完成一个修改操作,条件是有一个字段不能被修改。比如说录入的时间不能被修改。假如我们有三个字段,因为录入的时间字段不能被修改,剩下两个字段。一贯的操作是 new 一个User,给它附上两个字段的值(剩余的字段为空),然后更新数据库,然而这样会使得原来的时间字段变为null。
而ModelAttribute的做法是:不会new 一个User,而是从数据库中把相应的User拿出来再修改那两个字段,然后更新数据库后,就保留了原来的时间字段。
演示例子:
要求:
模拟修改操作
1.原始数据:1,Tom,123456,tom@atguigu.com,12
2.密码不能被修改
3.表单回显,模拟操作直接在表单填写对应的属性值
User.java
package com.springmvc.entities;
public class User {
private Integer id;
private String username;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
private String password;
private int age;
private String email;
private Address address;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
/* @Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", email='" + email + '\'' +
", address=" + address +
'}';
}*/
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", email='" + email + '\'' +
'}';
}
public User(String username, String password, String email, int age) {
this.username = username;
this.password = password;
this.age = age;
this.email = email;
}
public User(Integer id, String username, String password, String email, int age) {
this.id = id;
this.username = username;
this.password = password;
this.age = age;
this.email = email;
}
public User(){
}
}
1.在index.jsp中写好一个表单
2.编写控制器中的handler方法
3.运行程序,提交表单
这样是没有达成目的的。
4.修改方法
tips:
by the way:
解决方法一:
解决方法二:
写@ModelAttribute.