首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Struts2 標籤實現字串轉日期完整指南

     編輯:程式設計綜合問答

核心標籤:`<s:date>`

Struts2 提供專用日期格式化標籤 ``,可直接在 JSP 中將字串或 Date 物件格式化輸出,無需在 Action 中預先轉換。

基本用法

<!-- name 為 Action 中的屬性名(字串或 Date),format 指定輸出格式 -->
<s:date name="user.birthday" format="dd/MM/yyyy" />

<!-- 從資源檔獲取國際化格式 -->
<s:date name="user.birthday" format="%{getText('date.format')}" />

<!-- 使用預設格式 (由當地 Locale 決定) -->
<s:date name="user.birthday" />

字串轉日期的前置條件

`` 要求 `name` 對應的值必須是 **`java.util.Date` 或其子類(如 `Timestamp`)**。若 Action 中的屬性是字串(如 `"2024-01-15"`),需先轉型:

方案一:Action 中預先轉換(推薦)

// Action 類
private String birthdayStr; // 前端傳入字串
private Date birthday;      // 供標籤使用

public void setBirthdayStr(String birthdayStr) {
    this.birthdayStr = birthdayStr;
    try {
        this.birthday = new SimpleDateFormat("yyyy-MM-dd").parse(birthdayStr);
    } catch (ParseException e) { /* 處理異常 */ }
}

public Date getBirthday() { return birthday; }

方案二:使用 OGNL 表達式在標籤中即時轉換(不推薦,邏輯混雜視圖層)

<s:date name="#attr.birthdayStr" format="dd/MM/yyyy" />
<!-- 需配合自定義 TypeConverter 或 OGNL 靜態方法調用,複雜度高 -->

進階技巧

  • 時區控制:在 `struts.xml` 配置 `` 設定全域預設格式與時區。
  • 空值處理:搭配 `` 避免顯示空白或報錯。
  • HTML5 輸入框:表單編輯時建議用 `` 瀏覽器原生日期選擇器,提交自動綁定為 Date 類型(需 Struts 2.5+)。

常見錯誤與排查

  1. 顯示亂碼/格式錯誤:檢查 JSP 頁面編碼 `<%@ page contentType="text/html;charset=UTF-8" %>` 與資料庫時區一致性。
  2. 綁定失敗:確認 Action 有對應的 `getXxx()` 方法,且屬性類型為 `Date`。
  3. 國際化失效:確保 `getText('key')` 對應的 properties 檔案編碼為 UTF-8 並放在 classpath 根目錄。

總結

Struts2 `` 標籤是處理日期顯示的標準方式,關鍵在於確保傳給標籤的值為 `java.util.Date` 類型。建議在 Action 層完成字串到 Date 的解析與驗證,視圖層僅負責格式化輸出,符合 MVC 分層原則。

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