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

Struts 驗證框架實戰:ActionErrors/ActionMessages 完整使用指南

     編輯:Java 相關知識

Struts 1.x 驗證框架核心類別 `ActionErrors`、`ActionMessages` 及其配套標籤使用詳解,涵蓋後端驗證邏輯、錯誤訊息儲存、前端顯示完整鏈路。

核心類別關係

  • `ActionError` / `ActionMessage`:單條訊息物件,攜帶資源鍵值
  • `ActionErrors` / `ActionMessages`:訊息集合容器,`ActionMessages` 為超集,支援非錯誤類訊息
  • 繼承關係:`ActionError` extends `ActionMessage`,`ActionErrors` extends `ActionMessages`

後端驗證與訊息添加

Action 中手動驗證

ActionMessages errors = new ActionMessages();
if (!"123".equals(loadForm.getUsername())) {
  errors.add("username", new ActionMessage("error.username"));
  saveErrors(request, errors);  // 關鍵:儲存至 request 屬性
  return mapping.findForward("S1");
}
if (!"abc".equals(loadForm.getPassword())) {
  errors.add("password", new ActionMessage("error.password"));
  saveErrors(request, errors);
  return mapping.findForward("S1");
}

ActionForm validate() 方法驗證

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
  ActionErrors errors = new ActionErrors();
  if (username == null || password == null || 
      username.trim().length() < 3 || password.trim().length() < 2) {
    errors.add("username", new ActionMessage("error.up"));
    return errors;  // 返回非 null 表示驗證失敗,Struts 自動導向 input 頁面
  }
  return null;  // 驗證通過
}

兩種儲存方法差異

方法用途對應前端標籤
`saveErrors(request, errors)`儲存錯誤訊息 (較少用)``
`saveMessages(request, messages)`儲存一般訊息 (常用)``

兩者本質相同,鍵值分別為 `org.apache.struts.action.ERROR_KEY` 與 `org.apache.struts.action.MESSAGE_KEY`。

資源檔配置 (ApplicationResources.properties)

error.username=<font color="red">\u5e10\u53f7\u9519</font>
error.password=<font color="red">\u5bc6\u7801\u9519</font>
error.up=<font color="red">\u5e10\u53f7\u6216\u5bc6\u7801\u4e0d\u80fd\u7a7a</font>

中文需使用 `native2ascii` 轉 Unicode 碼點。

前端 JSP 顯示

<html:form action="/login">
  <html:errors property="username" />  <!-- 顯示特定屬性錯誤 -->
  <html:text property="username" />
  
  <html:errors property="password" />
  <html:password property="password" />
  
  <html:messages id="msg" message="true">  <!-- 顯示一般訊息 -->
    <bean:write name="msg" /><br/>
  </html:messages>
</html:form>

關鍵配置要點

  1. `struts-config.xml` 中 Action 必須指定 `name` (FormBean 名稱) 與 `input` (驗證失敗導向頁面)
  2. JSP 必須使用 `` 標籤,否則隱藏 Token 欄位不會生成,驗證失敗無法回顯
  3. 資源鍵名稱需與 `errors.add(property, key)` 的第二參數完全一致

最佳實踐建議

  • 優先使用 `ActionMessages` + `saveMessages()` + `` 組合,語意更清晰
  • 驗證邏輯集中在 `ActionForm.validate()`,業務邏輯驗證在 Action 中處理
  • 錯誤訊息樣式統一由 CSS 控制,資源檔僅存純文字,避免 HTML 標籤硬編碼
  • 複雜驗證規則可整合 Commons Validator 或遷移至 Struts 2 驗證框架
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved