Struts2 默認日期輸出格式(如 Jan 1, 2024 12:00:00 AM)不符合中文習慣(2024-01-01 或 2024-01-01 12:00:00),需顯式格式化。
<s:date> 標籤(最簡單)<s:date name="birthday" format="yyyy-MM-dd" />
<!-- 輸出:2024-01-15 -->
屬性說明:
name:Action 中日期屬性名(java.util.Date)。format:Java SimpleDateFormat 模式。<s:textfield> + <s:param> 格式化表單輸入<s:textfield name="birthday">
<s:param name="value">
<s:date name="birthday" format="yyyy-MM-dd" />
</s:param>
</s:textfield>
<input type="text" value="<s:date name='birthday' format='yyyy-MM-dd' />" />
struts.custom.i18n.resources=globalMessages
globalMessages_zh_CN.properties(中文):
global.datetime={0, date, yyyy-MM-dd HH:mm:ss}
global.date={0, date, yyyy-MM-dd}
globalMessages_en_US.properties(英文):
global.datetime={0, date, MMM d, yyyy h:mm:ss a}
global.date={0, date, MMM d, yyyy}
<!-- 日期格式 -->
<s:textfield name="birthday" value="%{getText('global.date', {birthday})}" />
<!-- 日期時間格式 -->
<s:textfield name="birthday" value="%{getText('global.datetime', {birthday})}" />
| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
<s:date> | 簡單直接,無需配置 | 分散在各頁面,難以統一變更 | 項目小、格式固定、無多語言需求 |
<s:param> | 表單回顯友好 | 同方案一 | 編輯頁面日期回填 |
| 國際化 | 集中管理,多語言自動切換,格式變更單點修改 | 初期配置稍繁瑣 | 中大型項目、多語言、規範化團隊 |
String 而非 Date 類型 → 格式化失效。yyyy(年)、MM(月)、dd(日)、HH(24制時)、mm(分)、ss(秒)。