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

EasyUI Datagrid 日期字段顯示 [object Object] 的修復:配置 formatter 函數

     編輯:程式設計綜合問答

問題原因

後端將 java.sql.Date 序列化為 JSON 物件(如 {year:2024, month:1, day:15}),EasyUI 直接將物件轉字符串顯示,結果為 [object Object]。

解決方案:列定義添加 formatter

$('#dg').datagrid({
    columns: [[
        {field: 'regist_time', title: '註冊時間', width: 120,
            formatter: function(value, row, index) {
                // value 可能是 Date 物件或字符串
                if (!value) return '';
                // 若為物件 {year, month, day}
                if (typeof value === 'object') {
                    var y = value.year + 1900; // java.sql.Date year 從 1900 起
                    var m = (value.month + 1).toString().padStart(2, '0');
                    var d = value.date.toString().padStart(2, '0');
                    return y + '-' + m + '-' + d;
                }
                return value; // 已是字符串
            }
        }
    ]]
});

替代方案:後端直接輸出格式化字符串

// Java 後端
config.registerJsonValueProcessor(java.sql.Date.class, new JsonValueProcessor() {
    public Object processObjectValue(String key, Object value, JsonConfig cfg) {
        if (value == null) return "";
        return new SimpleDateFormat("yyyy-MM-dd").format((Date)value);
    }
    public Object processArrayValue(Object value, JsonConfig cfg) { return processObjectValue(null, value, cfg); }
});

建議

前端 formatter 更靈活,不修改後端即可適配多種日期格式;後端統一格式則減少前端邏輯。根據團隊協作習慣選擇。

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