佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Spring MVC自定義日期類(lèi)型轉(zhuǎn)換器實(shí)例詳解

Spring MVC自定義日期類(lèi)型轉(zhuǎn)換器實(shí)例詳解

熱門(mén)標(biāo)簽:電子圍欄 阿里云 團(tuán)購(gòu)網(wǎng)站 Linux服務(wù)器 服務(wù)器配置 銀行業(yè)務(wù) Mysql連接數(shù)設(shè)置 科大訊飛語(yǔ)音識(shí)別系統(tǒng)

Spring MVC自定義日期類(lèi)型轉(zhuǎn)換器實(shí)例詳解

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

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

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

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

package com.tgsit.cjd.utils;
/**
 * 日期類(lèi)型轉(zhuǎn)換器:
 *     自動(dòng)格式化對(duì)象中的日期類(lèi)型
 */
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
public class JsonDateValueProcessor implements JsonValueProcessor{
  private String format ="yyyy-MM-dd"; 
  public JsonDateValueProcessor() { 
    super(); 
  }  
  public JsonDateValueProcessor(String format) { 
    super(); 
    this.format = format; 
  } 
  @Override 
  public Object processArrayValue(Object paramObject, 
      JsonConfig paramJsonConfig) { 
    return process(paramObject); 
  } 
  @Override 
  public Object processObjectValue(String paramString, Object paramObject, 
      JsonConfig paramJsonConfig) { 
    return process(paramObject); 
  }  
  private Object process(Object value){ 
    if(value instanceof Date){  
      SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);  
      return sdf.format(value); 
    }  
    return value == null ? "" : value.toString();  
  } 
}

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

dependency>
   groupId>net.sf.json-lib/groupId>
   artifactId>json-lib/artifactId>
   version>2.4/version>
   classifier>jdk15/classifier>
/dependency>

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

這里必須先創(chuàng)建JsonConfig對(duì)象,然后調(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í)體對(duì)象,則直接可以jsonObject.formObject(數(shù)據(jù),new JsonConfig());

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

@RequestMapping(value = "/exportInfo", method = RequestMethod.GET)
  @ResponseBody
  public String exportInfo(HttpServletResponse response) throws Exception{
    ListQueryVo> exportInfoList = queryVoService.exportInfo();
    if(exportInfoList != null  exportInfoList.size() > 0){
      ListObject> result = new ArrayListObject>();
      JsonResult model = null;
      for (QueryVo queryVo : exportInfoList) {
        OwnerInfo ownerInfo = ownerInfoService.selectOwnerInfoByVIN(queryVo.getVin());
        ListMortgagerInfo> morInfoList = mortgagerInfoService.selectByVIN(queryVo.getVin());
        ListTransferInfo> traInfoList = transferInfoService.selectByVIN(queryVo.getVin());
        model = new JsonResult();
        model.setOwnerInfo(ownerInfo);
        model.setMortgagerInfo(morInfoList);
        model.setTransferInfo(traInfoList);
        result.add(model);
      }
      //調(diào)用自定義日期類(lèi)型轉(zhuǎn)換器,自動(dòng)格式化對(duì)象中的日期類(lèi)型的字段值
      JsonConfig jsonConfig = new JsonConfig(); 
      jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
      return CGSConstants.returnJson(CGSConstants.SUCCESS,"導(dǎo)出成功",JSONArray.fromObject(result, jsonConfig));
    }
    return CGSConstants.returnJson(CGSConstants.SUCCESS,"尚無(wú)數(shù)據(jù)",null);
  }

 感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:
  • SpringMVC自定義類(lèi)型轉(zhuǎn)換器實(shí)現(xiàn)解析
  • 詳解SpringMVC的類(lèi)型轉(zhuǎn)換及驗(yàn)證方法
  • 詳解SpringMVC注解@initbinder解決類(lèi)型轉(zhuǎn)換問(wèn)題
  • 解決springmvc關(guān)于前臺(tái)日期作為實(shí)體類(lèi)對(duì)象參數(shù)類(lèi)型轉(zhuǎn)換錯(cuò)誤的問(wèn)題
  • springMVC4之強(qiáng)大類(lèi)型轉(zhuǎn)換器實(shí)例解析
  • SpringMVC實(shí)現(xiàn)自定義類(lèi)型轉(zhuǎn)換器
  • SpringMVC對(duì)日期類(lèi)型的轉(zhuǎn)換示例
  • Springmvc自定義類(lèi)型轉(zhuǎn)換器實(shí)現(xiàn)步驟

標(biāo)簽:蚌埠 萍鄉(xiāng) 衡水 廣元 棗莊 江蘇 大理 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Spring MVC自定義日期類(lèi)型轉(zhuǎn)換器實(shí)例詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266
    灯塔市| 眉山市| 邵阳县| 新乡市| 福鼎市| 惠水县| 方城县| 英吉沙县| 辛集市| 浪卡子县| 惠州市| 靖安县| 宁晋县| 讷河市| 丹棱县| 神池县| 平凉市| 伊通| 黄冈市| 射阳县| 象州县| 丰宁| 永济市| 牡丹江市| 台山市| 霍州市| 庆城县| 高碑店市| 平山县| 澄城县| 乐昌市| 安吉县| 寿宁县| 德格县| 兴安县| 公主岭市| 吉木萨尔县| 和硕县| 陕西省| 青岛市| 正安县|