Struts2 / Spring MVC 頁面中 `
經檢查 DAO 層 SQL 語句,**手誤將 `IN` 寫成 `=` 或列表拼接缺少引號**,導致查詢返回結果集為空或錯誤,進而綁定失敗。
典型錯誤:
-- ❌ 錯誤:單值比較
SELECT * FROM role WHERE id = '1,2,3'
-- ✅ 正確:集合比較
SELECT * FROM role WHERE id IN (1,2,3)
-- 或參數化 (MyBatis)
SELECT * FROM role WHERE id IN
#{id}
// Action
private List roleIds; // 必須與 name="user.roleIds" 對應
// getter/setter
// 回顯時:roleIds = roleService.getIdsByUserId(userId); // 返回 List {1,3}
框架會自動將 `roleIds` 中的值與 `allRoles` 的 `listKey` 比對,**類型必須一致** (Integer vs Integer, String vs String),否則勾選失效。
**90% 回顯異常源於 SQL 錯誤或類型不匹配**而非框架 Bug。修正 SQL、統一類型、加上單元測試,問題即刻消失。