Struts2 支援巢狀 POJO 屬性綁定,將表單欄位對應到 Action 內部物件的屬性(如 user.username),使架構更清晰,利於多層開發。
User.java:封裝 username、password。login2.jsp:<s:textfield name="user.username"/>LoginAction2:含 User user 屬性及 getter/setter。validate():驗證 user.username、user.password 長度。*********getUser()************* // 1. 取得 User 實例(若無則新建)
********setUser()*********** // 2. 呼叫 setUser() 準備注入
******setPassword()********* // 3. 真正設定 password
*********getUser()************* // 4. 再次取得 User 實例
*******setUsername()******** // 5. 真正設定 username
******validate()****** // 6. 執行驗證
******getUsername()****** // 7. 驗證時讀取 username
******getUsername()****** // 8. 第二次讀取(內部邏輯)
******getPassword()******* // 9. 驗證時讀取 password
******getPassword()******* // 10. 第二次讀取
*****execute()****** // 11. 執行業務邏輯
******getUsername()****** // 12. 業務中讀取 username
******getPassword()******* // 13. 業務中讀取 password
*********getUser()************* // 14. 結果頁渲染前取得 User
******getUsername()****** // 15. 渲染 username
********getUser()************* // 16. 再次取得 User
******getPassword()******* // 17. 渲染 password
user.username 導航,自動建立/取得 User 實例並呼叫 setter。validate();驗證失敗返回 input 導回原頁顯示錯誤。execute() 執行業務邏輯,返回結果導向 success 頁面。<s:property value="user.username"/> 讀取並顯示。