首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Struts 文本域處理:動態下拉選單數據封裝範例

     編輯:Java 程式設計入門

場景描述

在 Struts 應用中,<html:select> 或 <html:optionsCollection> 渲染下拉選單時,後端需提供 LabelValueBean 集合或 Map。本範例展示一個簡單的數據封裝類 DataBean,根據傳入參數返回對應的顯示文本,模擬動態選項數據源。

核心代碼

public class DataBean {
    public DataBean() {
    }

    /**
     * 根據類型代碼返回顯示文本
     * @param kind 類型代碼("1" 為特定類型,其他為預設)
     * @return 對應的中文描述
     */
    public String getField(String kind) {
        if ("1".equalsIgnoreCase(kind)) {
            return "字段種類1";
        } else {
            return "其它值";
        }
    }
}

在 Struts 中的典型用法

  1. Action 中準備數據:
    public ActionForward execute(...) {
        DataBean bean = new DataBean();
        List options = new ArrayList();
        options.add(new LabelValueBean(bean.getField("1"), "1"));
        options.add(new LabelValueBean(bean.getField("2"), "2"));
        request.setAttribute("fieldOptions", options);
        return mapping.findForward("success");
    }
  2. JSP 渲染下拉框:
    <html:select property="selectedField">
        <html:optionsCollection name="fieldOptions" property="value" label="label"/>
    </html:select>

擴展建議:從硬編碼走向配置化

  • 資料庫驅動:建立字典表 SYS_DICT (type, code, label, sort_order),DAO 查詢緩存至 ApplicationContext。
  • 枚舉類替代:Java 5+ 使用 enum 定義固定選項,自帶 name()/ordinal(),類型安全且可擴展描述字段。
  • 前端框架解耦:現代架構採用 REST API 返回 JSON 選項,前端 Vue/React/Angular 自主渲染,後端無需生成 HTML 片段。

常見問題排查

現象原因解決
下拉框無選項Action 未放入集合、或屬性名不匹配檢查 request.setAttribute 名稱與 JSP name 一致
預設值未選中FormBean 屬性值與選項 value 類型不一致(String vs Integer)統一用 String,或在 FormBean 中轉型
中文亂碼JSP/請求/響應編碼不一致全鏈路 UTF-8,web.xml 配置 CharacterEncodingFilter

雖然範例簡單,但體現了「數據封裝 → Action 準備 → JSP 渲染」的經典 MVC 數據流,理解此流程有助於排查複雜表單綁定問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved