負責檢查資料格式與語法,不涉及業務邏輯。預設回傳 null,子類別需覆寫。
還原屬性預設值 (如字串設為 null 或初始值)。
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if (username == null || username.equals("")) {
errors.add(ActionErrors.GLOBAL_MESSAGE,
new ActionError("loginform.error.username"));
}
if (userpass == null || userpass.equals("")) {
errors.add(ActionErrors.GLOBAL_MESSAGE,
new ActionError("loginform.error.password"));
}
return errors;
}
回傳 ActionErrors:null 或空集合 = 驗證通過;含 ActionMessage = 驗證失敗,轉發至 input 指定資源。
# ApplicationResources.properties
loginform.error.username=please enter your username
loginform.error.password=please enter your password
# ApplicationResources_zh_CN.properties
loginform.error.username=請輸入用戶名
loginform.error.password=請輸入密碼
<action path="/login" name="loginActionForm" scope="request"
type="actions.LoginAction" validate="true" input="/login.jsp">
validate="true" 啟用驗證,input 指定失敗轉向頁面。
<html:messages id="error">
<li><bean:write name="error"/></li>
</html:messages>
message="true":從 Globals.MESSAGE_KEY 取得訊息message="false" (預設):從 Globals.ERROR_KEY 取得錯誤訊息瀏覽 https://localhost:8080/Struts1_Login/login.jsp,不輸入直接送出,顯示錯誤訊息。

Validator 屬 Jakarta Commons 專案,內建於 Struts 發布包。克服手動驗證侷限:無需硬編碼邏輯、支援規則複用、彈性配置。
| 組件 | 說明 |
|---|---|
| 驗證器 | 內建 required、mask、minLength、maxLength、range、date、email、creditCard 等;可擴充自訂驗證器 |
| 資源檔 | 提供本地化標籤與訊息,預設共用 Struts 訊息資源 |
| XML 配置 | validator-rules.xml (全域規則)、validation.xml (專案具體規則) |
| JSP 標籤 | <html:javascript> 產生客戶端 JavaScript 驗證碼 |
| ValidatorForm | 依 FormBean 名稱自動驗證屬性 |
| ValidatorActionForm | 依 Action 路徑自動驗證屬性 |
jakarta-oro.jar、commons-validator.jar 放入 WEB-INF/libvalidator-rules.xml、validation.xml 放入 WEB-INFstruts-config.xml 加入 PlugIn:<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
根元素 <form-validation>,含 <global> 定義多個 <validator>。屬性:name、classname、method、methodParams、depends、msg (資源檔 Key)。
根元素 <form-validation>,含 <global> (常數)、<formset>。
<form name="loginActionForm"> 對應 FormBean 名稱,內含 <field property="username" depends="required"> 等欄位驗證規則,<msg key="errors.required"/> 指定錯誤訊息 Key。
將 ActionForm 改為 ValidatorForm,移除手寫 validate()、reset()。
# 通用錯誤訊息 (英文/中文)
errors.required={0} is required. / {0} 是必須的.
errors.minlength={0} can not be less than {1} characters. / {0} 不能少於 {1} 個字符.
...
# 表單標籤
label.username=UserName: / 用戶名:
label.password=Password: / 密碼:
直接送出空表單,顯示配置的錯誤訊息。

Validator 框架亮點:伺服器自動生成 JS 驗證碼,減輕伺服器負載。
<html:javascript formName="loginActionForm" /> 產生 JS 函式<html:form ... onsubmit="return validateLoginActionForm(this);"> 綁定提交事件 (FormBean 名稱首字大寫)<html:javascript formName="loginActionForm" />
<html:form action="login.do" onsubmit="return validateLoginActionForm(this);">
...
</html:form>
瀏覽器彈出原生對話框顯示錯誤,無需送往伺服器。

從手動驗證進階至 Validator 框架,再啟用客戶端驗證,僅需修改 FormBean 繼承類別、配置 XML 與 JSP 兩行標籤。Validator 框架極大提升開發效率與使用者體驗。