溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Spring MVC__自定義日期類型轉(zhuǎn)換器

發(fā)布時(shí)間:2020-05-23 22:17:53 來源:網(wǎng)絡(luò) 閱讀:279 作者:26度出太陽 欄目:網(wǎng)絡(luò)安全

    

WEB層采用Spring MVC框架,將查詢到的數(shù)據(jù)傳遞給APP端或客戶端,這沒啥,但是坑的是實(shí)體類中有日期類型的屬性,但是你必須提前格式化好之后返回給它們。說真的,以前真沒這樣做過,之前都是一口氣查詢到數(shù)據(jù),然后在jsp頁面上格式化,最后展示給用戶。但是這次不同,這次我純屬操作數(shù)據(jù),沒有頁面。直接從數(shù)據(jù)庫拿數(shù)據(jù)給它們返數(shù)據(jù)、它們給我傳數(shù)據(jù)我持久化數(shù)據(jù),說到這里一個(gè)小問題就默默的來了。

 

首先把問題還原一下吧(這是一個(gè)數(shù)據(jù)導(dǎo)出功能),下圖中用紅框圈起來的都是直接從數(shù)據(jù)庫中拿到的數(shù)據(jù),但是不幸的是它們的對象中都包含日期類型的屬性,然后我直接使用com.alibaba.fastjson.JSONObject將其轉(zhuǎn)成json串返回給APP端和客戶端,但是他們拿到的數(shù)據(jù)中時(shí)間類型的值都是時(shí)間戳,很不人性化,我也覺的很不人性化,就答應(yīng)給他們格式化一下,不料,問題來了,格式化好之后然后又設(shè)置進(jìn)去,結(jié)果是沒用,沒用,沒用,重要的事情說三遍!

Spring MVC__自定義日期類型轉(zhuǎn)換器

解決上面出現(xiàn)的問題,格式化對象中的日期類型的屬性值,然后返回給請求者。記?。哼@個(gè)動(dòng)作是在服務(wù)器端完成,并且實(shí)體類和數(shù)據(jù)表中的類型也都不變,照樣是日期類型的。

第一步:首先自定義一個(gè)日期類型轉(zhuǎn)換器(附代碼)

Spring MVC__自定義日期類型轉(zhuǎn)換器

 1 package com.tgsit.cjd.utils; 3 /** 4  * 日期類型轉(zhuǎn)換器: 5  *         自動(dòng)格式化對象中的日期類型 6  */ 8 import java.text.SimpleDateFormat; 9 import java.util.Date;10 import java.util.Locale;12 import net.sf.json.JsonConfig;13 import net.sf.json.processors.JsonValueProcessor;15 public class JsonDateValueProcessor implements JsonValueProcessor{17     private String format ="yyyy-MM-dd";  19     public JsonDateValueProcessor() {  
20         super();  
21     }    23     public JsonDateValueProcessor(String format) {  
24         super();  
25         this.format = format;  
26     } 28     @Override  
29     public Object processArrayValue(Object paramObject,  
30             JsonConfig paramJsonConfig) {  
31         return process(paramObject);  
32     }  34     @Override  
35     public Object processObjectValue(String paramString, Object paramObject,  
36             JsonConfig paramJsonConfig) {  
37         return process(paramObject);  
38     }    41     private Object process(Object value){  
42         if(value instanceof Date){    
43             SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);    
44             return sdf.format(value);  
45         }    
46         return value == null ? "" : value.toString();    
47     }  49 }

Spring MVC__自定義日期類型轉(zhuǎn)換器

第二步:如果項(xiàng)目中沒有引入json-lib包,則引入

1 <dependency>2     <groupId>net.sf.json-lib</groupId>3     <artifactId>json-lib</artifactId>4     <version>2.4</version>5     <classifier>jdk15</classifier>6</dependency>

第三步:返回?cái)?shù)據(jù)之前先使用日期類型轉(zhuǎn)換器格式化日期數(shù)據(jù)

這里必須先創(chuàng)建JsonConfig對象,然后調(diào)用registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());方法將轉(zhuǎn)換器注入進(jìn)去,最后在調(diào)用JsonArray的formObject(數(shù)據(jù),new JsonConfig())方法進(jìn)行處理。

注意:這里還有個(gè)小坑,就是當(dāng)你處理的是單純的一個(gè)實(shí)體對象,則直接可以jsonObject.formObject(數(shù)據(jù),new JsonConfig());

但是你處理的一個(gè)list集合數(shù)據(jù)時(shí),則記得用jsonArray.formObject(數(shù)據(jù),new JsonConfig());否則報(bào)錯(cuò)。

 

Spring MVC__自定義日期類型轉(zhuǎn)換器

 1 @RequestMapping(value = "/exportInfo", method = RequestMethod.GET) 2     @ResponseBody 3     public String exportInfo(HttpServletResponse response) throws Exception{ 4         List<QueryVo> exportInfoList = queryVoService.exportInfo(); 5         if(exportInfoList != null && exportInfoList.size() > 0){ 6             List<Object> result = new ArrayList<Object>(); 7             JsonResult model = null; 8             for (QueryVo queryVo : exportInfoList) { 9                 OwnerInfo ownerInfo = ownerInfoService.selectOwnerInfoByVIN(queryVo.getVin());10                 List<MortgagerInfo> morInfoList = mortgagerInfoService.selectByVIN(queryVo.getVin());11                 List<TransferInfo> traInfoList = transferInfoService.selectByVIN(queryVo.getVin());12                 model = new JsonResult();13                 model.setOwnerInfo(ownerInfo);14                 model.setMortgagerInfo(morInfoList);15                 model.setTransferInfo(traInfoList);16                 result.add(model);17             }18             //調(diào)用自定義日期類型轉(zhuǎn)換器,自動(dòng)格式化對象中的日期類型的字段值19             JsonConfig jsonConfig = new JsonConfig();  
20             jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());21             return CGSConstants.returnJson(CGSConstants.SUCCESS,"導(dǎo)出成功",JSONArray.fromObject(result, jsonConfig));22         }23         return CGSConstants.returnJson(CGSConstants.SUCCESS,"尚無數(shù)據(jù)",null);24     }

Spring MVC__自定義日期類型轉(zhuǎn)換器


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI