Struts2 核心配置常量完整參考手冊 (struts.xml / properties / web.xml 三層優先級)
Struts2 通過常量控制框架行為,支援三種配置方式,優先級遞減:
- web.xml (Filter 參數) 最高
- struts.properties (類路徑根目錄)
- struts.xml (
<constant> 元素) 最低
struts.xml 常量配置範例 (開發模式全開)
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.convention.classes.reload" value="true"/>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.convention.result.path" value="/WEB-INF/content/" />
<constant name="struts.convention.default.parent.package" value="struts-default"/>
<constant name="struts.convention.package.locators" value="actions" />
<constant name="struts.convention.action.suffix" value="Action"/>
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<constant name="struts.convention.action.name.separator" value="-" />
<constant name="struts.custom.i18n.resources" value="i18n" />
<constant name="struts.i18n.reload" value="true" />
<constant name="struts.serve.static.browserCache" value="false" />
<constant name="struts.multipart.maxSize" value="-1" />
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.i18n.encoding" value="UTF-8" />
</struts>
基礎常量分類速查表
| 常量名 | 默認值 | 作用 |
| struts.devMode | false | 開發模式:熱加載配置/資源、詳細日誌 |
| struts.i18n.reload | 跟隨 devMode | 自動重載國際化資源文件 |
| struts.i18n.encoding | UTF-8 | 請求/資源文件編碼 |
| struts.configuration.xml.reload | 跟隨 devMode | 自動重載 XML 配置 |
| struts.action.extension | action, | Action URL 後綴,多值逗號分隔 |
| struts.action.excludePattern | - | 排除不經 Struts 處理的 URL 正則 |
| struts.enable.DynamicMethodInvocation | false | 支援 action!method 動態調用 |
| struts.enable.SlashesInActionNames | false | Action 名稱中允許斜線 |
| struts.mapper.alwaysSelectFullNamespace | false | 強制用最後一個斜線前作為 namespace |
| struts.multipart.maxSize | 2M | 上傳文件大小限制 (-1 無限制) |
| struts.ui.theme | xhtml | UI 模板主題 (simple 表無額外標籤) |
| struts.custom.i18n.resources | - | 自定義國際化資源文件基名 (逗號分隔) |
核心對象常量 (進階/插件相關)
| 常量名 | 默認實現 | 說明 |
| struts.objectFactory | StrutsObjectFactory | 對象工廠,Spring 插件會改為 StrutsSpringObjectFactory |
| struts.objectFactory.spring.autoWire | name | Spring 自動裝配模式 |
| struts.mapper.class | struts | URL 映射器:struts/composite/restful/restful2 |
| struts.multipart.handler | jakarta | 文件上傳處理器 |
| struts.ognl.allowStaticMethodAccess | false | OGNL 是否允許調用靜態方法 |
| struts.valueStackFactory | 默認 | ValueStack 工廠 |
| struts.actionProxyFactory | 默認 | ActionProxy 工廠 |
配置最佳實踐
- 生產環境務必
struts.devMode=false、struts.configuration.xml.reload=false。
- 統一編碼
struts.i18n.encoding=UTF-8 避免中文亂碼。
- 使用
struts.ui.theme=simple 禁用預設表單標籤模板,配合前端框架。
- 大文件上傳調大
struts.multipart.maxSize 並配合 struts.multipart.saveDir 指定臨時目錄。