這是前輩們對於SpringMVC接收表單數據記錄下來的總結經驗:
下面是我自己在使用時發現的,前輩們沒有記錄的細節和注意點:
使用bean來接收form表單提交的參數時,pojo中必須含有默認的(即空的)構造函數,同時,需要設置到bean中的變量必須有setter方法。
注:以下代碼均為示例代碼,非本人實際運行代碼,請自行補充。
例如:我有一個bean類是User,具有變量username和password。同時,表單提交的內容為:
<form action="save-user-info" method="post"> <span>帳號:</span><input type="text" name="username"><br> <span>密碼:</span><input type="text" name="password"><br> <input type="submit" value="保存"> </form>
那么,在User.java文件中必須具有
public User() {} public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; }
此時,我在Controller中才能成功接收到參數並生成對應的bean對象
@RequestMapping(value="/save-user-info") public String saveUser(SsbiUser user) { System.out.println(user.toString()); return "user-info"; }
通過一些測試,我把這個過程理解為,前台提交了一個包含User數據的form表單后,后台接受到參數后,首先會生成一個不包含任何參數的User對象,然后通過setter方法往這個空的對象這設置對應的值,最終得到我們需要的User對象。
而不是我一開始以為的,后台接受到參數以及直接調用對應的User(username, password)構造方法生成需要的對象。