Struts 1.x 驗證框架核心類別 `ActionErrors`、`ActionMessages` 及其配套標籤使用詳解,涵蓋後端驗證邏輯、錯誤訊息儲存、前端顯示完整鏈路。
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");
}
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`。
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 碼點。
<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>