首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Struts 2 日期格式化輸出完整解決方案:標籤、參數與國際化三種方式

     編輯:Oracle 資料庫基礎

Struts 2 日期顯示問題背景

在 Oracle 資料庫環境下開發 Struts 2 應用時,預設的日期輸出格式往往不符合中文用戶習慣(如美式 MM/dd/yyyy)。本文整理三種主流的日期格式化輸出方案,涵蓋標籤直接格式化、參數嵌套、以及國際化資源檔配置,滿足不同場景需求。

方案一:使用 <s:date> 標籤直接格式化

最簡單直接的方式,適合單純的日期顯示需求:

<s:date name="birthday" format="yyyy-MM-dd" />
  • name:對應 Action 中的日期屬性(需為 java.util.Date 或子類型)
  • format:Java SimpleDateFormat 模式字串
  • 輸出範例:1990-05-20

方案二:使用 <s:param> 嵌套 <s:date> 於表單欄位

當需要在輸入框(<s:textfield> 或原生 <input>)中顯示格式化日期時:

寫法 A:標準 Struts 標籤嵌套

<s:textfield name="birthday">
    <s:param name="value">
        <s:date name="birthday" format="yyyy-MM-dd" />
    </s:param>
</s:textfield>

寫法 B:原生 HTML input 搭配 OGNL 表達式

<input type="text" 
       value="<s:date name='birthday' format='yyyy-MM-dd' />" />

注意:寫法 B 中引號嵌套需轉義,實際開發建議優先使用寫法 A,可讀性與維護性更佳。

方案三:國際化資源檔統一管理日期格式(推薦企業級應用)

透過 Struts 2 內建的 i18n 機制,將日期格式集中配置於屬性檔,支援多語系自動切換。

步驟 1:配置 struts.properties 指定資源檔基礎名稱

struts.custom.i18n.resources=globalMessages

步驟 2:建立語系資源檔

globalMessages_zh_CN.properties(繁體中文環境請用 _zh_TW)

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, MM/dd/yyyy HH:mm:ss}
global.date={0, date, MM/dd/yyyy}
  • 格式遵循 MessageFormat 模式:{參數索引, 類型, 模式}
  • date 類型自動套用 SimpleDateFormat

步驟 3:頁面引用國際化鍵值

<!-- 僅日期 -->
<s:textfield name="birthday" value="%{getText('global.date', {birthday})}" />

<!-- 日期時間 -->
<s:textfield name="birthday" value="%{getText('global.datetime', {birthday})}" />
  • getText 從資源檔取得模式
  • {birthday} 以陣列方式傳遞參數給 {0}
  • 自動根據用戶 Locale 選擇對應資源檔

三種方案對比與選型建議

維度<s:date> 直接用<s:param> 嵌套國際化資源檔
實作複雜度低中高(需配置多檔案)
多語系支援無(硬編碼)無(硬編碼)原生支援
維護性分散在各頁面分散在各頁面集中管理,一處修改全站生效
適用場景單一語系、簡單顯示表單輸入框顯示企業級、多語系、格式頻繁調整

常見坑點提醒

  1. Action 屬性型別:確保日期屬性為 java.util.Date、java.sql.Date 或 Timestamp,字串型別會導致格式化失敗
  2. 時區一致性:伺服器、資料庫、JVM 時區不一致會導致日期偏移,建議統一設為 UTC 或目標業務時區
  3. 資源檔編碼:Properties 檔需以 ISO-8859-1 儲存,中文內容請用 native2ascii 轉換,或改用 XML 格式資源檔(.xml)支援 UTF-8
  4. 格式模式大小寫:yyyy(年)、MM(月)、dd(日)、HH(24時)、mm(分)、ss(秒),切勿寫錯

總結

Struts 2 提供了靈活的日期格式化機制。簡單專案用 <s:date> 即可;表單回顯建議用 <s:param> 嵌套;企業級多語系專案強烈建議採用國際化資源檔方案,將格式與業務邏輯解耦,長期維護成本最低。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved