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

JSP ActionForm 與一般欄位資料綁定正確寫法

     編輯:關於JSP

常見錯誤場景

在修改他人程式碼時,易忽略 ActionForm 與一般請求屬性的綁定差異,導致資料無法正確顯示。

ActionForm 正確綁定寫法

JSP 頁面

<%
  ExpenseItemForm form = (ExpenseItemForm) request.getAttribute("oldexpenseItemForm");
%>
<input name="expenseItemNumber" type="text" class="input"
  value="<%=form.getExpenseItemNumber()%>" size="20" />

Action/Controller

ExpenseItemForm oldexpenseItemForm = new ExpenseItemForm();
oldexpenseItemForm.setExpenseItemNumber(oldexpenseItemNumber);
// ... 其他屬性設定
request.setAttribute("oldexpenseItemForm", oldexpenseItemForm);

一般請求屬性 (單一欄位) 正確寫法

JSP 頁面 - 方式一:Scriptlet

<input name="roleId" class="" id="roleId" size="22"
  value="<%=request.getAttribute("roleId")%>" type="hidden" />

JSP 頁面 - 方式二:EL 運算式 (推薦)

<input name="roleId" class="" id="roleId" size="22"
  value="${roleId}" type="hidden" />

Action/Controller

request.setAttribute("roleId", roleId);

核心差異比較表

項目ActionForm (表單物件)一般屬性 (單一值)
JSP 取值方式form.getProperty()request.getAttribute() 或 ${attrName}
Controller 存值request.setAttribute("formName", formObj)request.setAttribute("attrName", value)
適用場景多欄位表單、驗證、重複使用單一參數、簡單傳遞、旗標值
型別安全強型別、編譯期檢查弱型別、執行期轉型

最佳實踐建議

  • 優先使用 EL 運算式 ${...} 替代 Scriptlet,程式碼更乾淨
  • ActionForm 適用於 Struts 等 MVC 框架 的表單處理流程
  • 簡單參數傳遞直接用 request.setAttribute 配合 EL
  • 注意:value="${roleId}" 若 roleId 為 null 會顯示空字串,不會拋出例外
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved