JSP 頁面使用自定義標籤 <t:select name="category_id" datasource="${gory}">,後台已將查詢結果 List<HashMap> 放入 request 屬性 gory,但下拉選單無法顯示值。
name="category_id" 指定的提交欄位名,與資料庫查詢返回的 Map Key(如 categoryId、id、category_id)不一致,導致標籤無法正確綁定顯示值與提交值。
select * from v_category 返回欄位名(如 category_id, category_name)。valueField、textField 對應 Map 的 Key。<t:select name="category_id" datasource="${gory}" valueField="category_id" textField="category_name" blanktext="-請選擇-"></t:select>// Action/Controller
this.setResult("gory", this.service.loadGory(id));
// Service
public List loadGory(String id) { return this.dao.loadGory(id); }
// DAO (iBATIS)
public List loadGory(String id) { return this.select("goods.loadGory", id); }
// SQL Map
<select id="goods.loadGory" parameterClass="String" resultClass="HashMap">
select category_id, category_name from v_category
</select>
下拉選單綁定失敗多因「提交名」與「資料源 Key」不對應,檢查標籤文檔並明確指定 valueField/textField 即可解決。