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

Struts2 與 Oracle 日期格式化輸出完全指南:s:date、s:param 與國際化三種方案

     編輯:Oracle 資料庫基礎

問題背景

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' />" />

方案三:國際化資源文件統一管理(推薦企業級)

1. 配置 struts.properties

struts.custom.i18n.resources=globalMessages

2. 定義格式鍵值

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}

3. 頁面調用

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

<!-- 日期時間格式 -->
<s:textfield name="birthday" value="%{getText('global.datetime', {birthday})}" />

方案對比與選型建議

方案優點缺點適用場景
<s:date>簡單直接,無需配置分散在各頁面,難以統一變更項目小、格式固定、無多語言需求
<s:param>表單回顯友好同方案一編輯頁面日期回填
國際化集中管理,多語言自動切換,格式變更單點修改初期配置稍繁瑣中大型項目、多語言、規範化團隊

常見坑點

  • Action 中日期屬性為 String 而非 Date 類型 → 格式化失效。
  • 格式模式區分大小寫:yyyy(年)、MM(月)、dd(日)、HH(24制時)、mm(分)、ss(秒)。
  • 時區不一致導致日期偏移 → 確保伺服器、JVM、數據庫時區一致(建議統一 UTC)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved