日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringMVC框架 |自定义类型转换器与日期格式化

發(fā)布時(shí)間:2024/3/7 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC框架 |自定义类型转换器与日期格式化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、Spring支持的轉(zhuǎn)換器
  • 二、自定義轉(zhuǎn)換器的步驟
    • 第一步:實(shí)現(xiàn)Converter接口
    • 第二步:將Converter配置到ConverterService組件中
    • 第三步:將組件聲明在annotation-driven標(biāo)簽中
  • 三、關(guān)于annotation-driven標(biāo)簽
  • 四、日期格式化


一、Spring支持的轉(zhuǎn)換器

Spring定義了3種類型的轉(zhuǎn)換器接口,實(shí)現(xiàn)任意一個(gè)轉(zhuǎn)換器接口都可以作為自定義轉(zhuǎn)換器注冊到ConversionServiceFactroyBean中:

  • Converter<S,T>:將S類型對象轉(zhuǎn)為T類型對象。
  • ConverterFactory:將相同系列多個(gè)同質(zhì)Converter封裝在一起。如果希望將一種類型的對象轉(zhuǎn)換為另一種類型及其子類的對象(例如將String轉(zhuǎn)換為Number及Number子類(Integer、Long、Double等)對象)可使用該轉(zhuǎn)換器工廠類。
  • GenericConverter:會(huì)根據(jù)源類對象及目標(biāo)類對象所在的宿主類中的上下文信息進(jìn)行類型轉(zhuǎn)換.

由于后兩種形式并不常用,本文僅介紹第一種,實(shí)現(xiàn)Converter<S,T>接口的方法。

二、自定義轉(zhuǎn)換器的步驟

ConverterService是一個(gè)接口,它有一個(gè)實(shí)現(xiàn)類Converter(轉(zhuǎn)換器)進(jìn)行工作。自定義轉(zhuǎn)換器,步驟如下

  • ①先實(shí)現(xiàn)Converter接口,寫一個(gè)自定義的類型轉(zhuǎn)換器。
  • ②將Converter配置在ConverterService組件中。
  • ③將組件聲明在annotation-driven標(biāo)簽中。

在頁面添加一個(gè)快速添加的按鈕

list.jsp

<form action="${ctp }/quickadd"><input name="empinfo" value="empAdmin-admin@qq.com-1-101"/><input type="submit" value="快速添加" /></form>

點(diǎn)擊發(fā)送/quickadd請求到handler處理器。

@RequestMapping("/quickadd")public String quickAdd(@RequestParam("empinfo") Employee employee) {System.out.println("封裝:" + employee);employDao.save(employee);return "redirect:/emps";}

handler處理器中調(diào)用保存方法后發(fā)送/emps請求,進(jìn)而返回list.jsp頁面。

第一步:實(shí)現(xiàn)Converter接口

頁面提交的將要轉(zhuǎn)換的字符串為:empAdmin-admin@qq.com-1-101

  • 自定的轉(zhuǎn)換器實(shí)現(xiàn)的功能:將String類型轉(zhuǎn)換為Employee對象。
/*** S:Source * T:Target * 將String轉(zhuǎn)換為Employee對象* @guoqianliang*/ public class MyStringToEmployeeConverter implements Converter<String, Employee> {@AutowiredDepartmentDao dpartmentDao;@Overridepublic Employee convert(String source) {System.out.println("頁面提交的將要轉(zhuǎn)換的字符串:" + source);Employee employee = new Employee();if (source.contains("-")) {String[] split = source.split("-");employee.setLastName(split[0]);employee.setEmail(split[1]);employee.setGender(Integer.parseInt(split[2]));employee.setDepartment(dpartmentDao.getDepartment(Integer.parseInt(split[3])));}return employee;} }

第二步:將Converter配置到ConverterService組件中

  • 將自定義的Converter實(shí)現(xiàn)類配置到ConverterService組件中。
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"><!-- 添加自定義的類型轉(zhuǎn)換器 --><property name="converters"><set><bean class="com.gql.component.MyStringToEmployeeConverter"></bean></set></property></bean>

后續(xù)為了與日期格式化兼容,通常使用下面的寫法:

<bean id="conversionService"class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><!-- 添加自定義的類型轉(zhuǎn)換器 --><property name="converters"><set><bean class="com.gql.component.MyStringToEmployeeConverter"></bean></set></property></bean>

第三步:將組件聲明在annotation-driven標(biāo)簽中

<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>

自定義轉(zhuǎn)換器設(shè)置完成,控制臺(tái)輸出:

頁面提交的將要轉(zhuǎn)換的字符串:empAdmin-admin@qq.com-1-101 封裝:Employee [id=null, lastName=empAdmin, email=admin@qq.com, gender=1, department=Department [id=101, departmentName=D-AA]]

三、關(guān)于annotation-driven標(biāo)簽

  • <mvc:annotation-driven /"> 標(biāo)簽會(huì)自動(dòng)注冊RequestMappingHandlerMapping、RequestMappingHandlerAdapter與ExceptionHandlerExceptionResolver三個(gè)bean。

  • 支持使用ConverterService實(shí)例對表單參數(shù)進(jìn)行類型轉(zhuǎn)換。

  • 支持使用@NumberFormat annotation、@DateTimeFormart注解完成數(shù)據(jù)類型的格式化。

  • 支持使用@Valid注解對JavaBean實(shí)例進(jìn)行JSR303校驗(yàn)。

  • 支持使用@RequestBody和@ResponseBody注解。

四、日期格式化

對屬性對象的輸入和輸出進(jìn)行格式化,本質(zhì)上還是類型轉(zhuǎn)換的范疇。

Spring在格式化模塊中定義了一個(gè)實(shí)現(xiàn)ConverterService接口的FormattingConversionService實(shí)現(xiàn)類,該實(shí)現(xiàn)類擴(kuò)展了GenericConversionService,因此它即具有類型轉(zhuǎn)換的功能,又具有格式化的功能。

  • FormattingConversionService擁有一個(gè)工廠類FormattingConversionServiceFactoryBean,后者用于在Spring上下文中構(gòu)造前者。
  • FormattingConversionServiceFactoryBean內(nèi)部已經(jīng)注冊了
    ①NumberFormatAnnotationFormatterFactory:支持對數(shù)字類型的屬性使用@NumberFormat注解。
    如:@NumberFormat(pattern="#,###,###")
    ②JodaDateTimeFormatAnnotationFormatterFactory:支持對日期類型的屬性使用@DateTimeFormat注解。
    如:@DateTimeFormat(pattern = “yyyy-MM-dd”)

另外,需要注意的是ConversionServiceFactoryBean所創(chuàng)建的ConversionService組件沒有格式化器,使用時(shí)需要在SpringMVC配置中將其替換為FormattingConversionServiceFactoryBean組件。

總結(jié)

以上是生活随笔為你收集整理的SpringMVC框架 |自定义类型转换器与日期格式化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。