1. 程式人生 > >SpringMVC_10_ 處理模型資料(二)之 ModelAttribute

SpringMVC_10_ 處理模型資料(二)之 ModelAttribute

SpringMVC_10_ 處理模型資料(二)之 ModelAttribute

問題描述:

當我想要完成一個修改操作,條件是有一個欄位不能被修改。比如說錄入的時間不能被修改。假如我們有三個欄位,因為錄入的時間欄位不能被修改,剩下兩個欄位。一貫的操作是 new 一個User,給它附上兩個欄位的值(剩餘的欄位為空),然後更新資料庫,然而這樣會使得原來的時間欄位變為null。

而ModelAttribute的做法是:不會new 一個User,而是從資料庫中把相應的User拿出來再修改那兩個欄位,然後更新資料庫後,就保留了原來的時間欄位。

演示例子:

要求:

模擬修改操作
1.原始資料:1,Tom,123456,
[email protected]
,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.