後端將 java.sql.Date 序列化為 JSON 物件(如 {year:2024, month:1, day:15}),EasyUI 直接將物件轉字符串顯示,結果為 [object Object]。
$('#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 更靈活,不修改後端即可適配多種日期格式;後端統一格式則減少前端邏輯。根據團隊協作習慣選擇。