Struts HTML 標籤庫不僅封裝 HTML 元素,更整合了框架核心功能:自動綁定 Form Bean、客戶端驗證腳本生成、國際化適配、錯誤顯示等。使用前需完成三步配置:
web.xml 註冊 TLD:<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>struts-html.tld 複製到 WEB-INF 目錄 (類文件已在 struts.jar 中)<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>生成 <html> 標籤,支援兩個屬性:
locale="true":自動根據服務器 Locale 生成 lang 屬性,部署到不同語言環境無需改代碼xhtml="true":生成符合 XHTML 規範的標籤生成 <base href="...">,必須置於 <head> 區塊,解決相對路徑資源引用問題。
<html:link page="/index.jsp">Index</html:link>
<!-- 生成:<a href="/context/index.jsp">Index</a> -->
自動添加上下文路徑,支援 action、forward、href 等多種目標指定方式。
單標籤處理所有驗證錯誤:
<html:errors/>
自動查找請求屬性 org.apache.struts.action.ERROR_KEY,支援 ActionErrors、字符串、字符串數組。配合資源文件鍵自定義佈局:
errors.header:錯誤列表前綴errors.footer:錯誤列表後綴errors.prefix:單條錯誤前綴errors.suffix:單條錯誤後綴Logic 標籤庫提供條件判斷、迭代、比較等邏輯標籤,減少 Scriptlet 使用。配置方式類似,TLD 為 struts-logic.tld,前綴通常為 logic。
| 標籤 | 功能 | 關鍵屬性 |
|---|---|---|
logic:empty | 判斷對象為空 (null、空集合、空字符串) | name, property, scope |
logic:notEmpty | 判斷對象非空 | name, property, scope |
logic:equal / notEqual | 等於/不等於比較 | name/cookie/header/parameter/property + value |
logic:greaterThan / greaterEqual | 大於/大於等於 | 同上 |
logic:lessThan / lessEqual | 小於/小於等於 | 同上 |
logic:match / notMatch | 字符串模式匹配 (支持通配符) | location 指定匹配位置 |
logic:present / notPresent | 檢查請求參數/屬性是否存在 | cookie/header/name/parameter/property/role/user |
所有比較標籤體內容為 JSP,條件成立時輸出體內容。
logic:iterate:遍歷集合 (List、ArrayList、HashMap 等),屬性豐富:collection/name 指定源,id 當前項變量名,indexId 索引變量,offset/length 分頁控制,type 指定元素類型logic:messagesPresent / messagesNotPresent:檢查 ActionMessages/ActionErrors 是否存在,用於條件顯示錯誤/提示區塊logic:forward:頁面轉向,查找全局 forward 配置,屬性 name 指定 forward 名稱logic:redirect:客戶端重定向,支援參數傳遞:anchor、forward、href、page、paramId/paramName/paramProperty/paramScope 等豐富屬性構建目標 URLActionForm,啟用客戶端驗證 (onsubmit 腳本自動生成)<html:errors/>,配合資源文件維護提示文案logic:iterate 配合 bean:write 或 EL 表達式最清晰logic:forward/redirect 管理跨模組導航