SpringMVC自定義類型轉換器
標簽: springmvc
在表單提交得的數據類型都是字符串類型的,但是后臺定義的是int類型的,數據還是可以封裝進去,SpringMVC默認是進行數據類型轉換。但是對于日期類型的數據進行轉換,就會出現錯誤。
這時我們就需要自定義進行數據封裝。就比如下面的類型轉換(日期的格式轉換)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="hello">
姓名:<input type="text" name="name"/><br>
年齡:<input type="text" name="age"/><br>
生日:<input type="text" name="date"><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
Controller類
@Controller
public class Controller01 {
@RequestMapping("/hello")
public String Hello(User user){
System.out.println("第一個springmvc程序");
System.out.println(user);
return "success";
}
}
使用對象進行數據封裝
package com.Ycy.spring.domain;
import java.util.Date;
/**
* @Author YCY
* @Date 2020/10/8 12:18
* @Version 1.0
*/
public class User {
private String name;
private int age;
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", date=" + date +
'}';
}
}
執行的代碼:
對于輸入的2021-04-14默認的數據類型是無法轉換的,輸入2021/04/14就可以轉換成功!!
針對上面的問題:自定義數據轉換
自定義一個類來實現Converter接口
我們現在只需實現一個Converter<S,T>接口將String信息轉化為日期
在實現時,需要選擇springmvc框架的
在實現其方法convert方法,泛型需根據需求寫,在此方法中進行對傳入的string格式化。
public class DateToString implements Converter<String, Date> {
@Override
public Date convert(String s) {
if(s == null){
throw new RuntimeException("輸入日期非空");
}
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
return df.parse(s);
} catch (ParseException e) {
throw new RuntimeException("日期轉換出現錯誤");
}
}
}
完成此類,但是還是告訴springmvc這個自定義的類
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- springmvc配置文件,聲明Controller和其他web相關的對象-->
<context:component-scan base-package="com.Ycy.spring.controller"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 注冊自定義類型轉換器 -->
<bean id="converter" class="org.springframework.context.support.ConversionServiceFactoryBean">
<!-- ConversionServiceFactoryBean的屬性 -->
<property name="converters">
<set>
<!-- 把自己定義的類寫入,默認的格式不會被覆蓋 -->
<bean class="com.Ycy.spring.Utils.DateToString"/>
</set>
</property>
</bean>
<!-- 注解驅動 -->
<mvc:annotation-driven conversion-service="converter"/>
</beans>
可以看出來這個converters是個set對象。
然后我們在之前寫的mvc:annotation-driven配置使得其能自動注冊ConversionServiceFactoryBean對象
再次執行:
智能推薦
自定義類型轉換器
自定義類型轉換器 字符串變成對象 自定義步驟 1 修改input.jsp頁面,實現Employee字符串變為POJO 2 Handler 3 自定義的轉化器(@Component) 4 springmvc的配置文件ConversionServiceFactoryBean 5 <mvc:annotation-driven>引用轉換器 6 debug ...
SpringMVC自定義ViewSolver(視圖解析器) 和 Convert(類型轉換器)
ViewSolver的作用我就不多說了. Convert的作用說一下: 在前端傳遞給后端數據的時候,會有一些問題,如數據的類型轉換,數據的格式化,數據的校驗等 SpringMVC有一個WebDataBind(DataBinder) 來完成數據綁定功能,而這個WebDataBind又有許多組件來完成各種功能 ConversionService組件:負責數據類型轉換和格式化功能,將請求信息填充到入參對...
SpringMVC學習筆記14-----數據綁定與自定義類型轉換器
一、問題分析 在之前的增刪改查中,數據都是通過表單傳向方法然后轉化成相應的數據類型!那么如果我們在java bean中再添加一個日期屬性birth時,就會有三個問題: 1.如何將表單中的字符串格式轉向日期格式:數據類型轉換 2.表單中輸入的字符串格式應該是怎么樣的:數據類型格式化 3.這是個生日屬性,既然是生日屬性就應該是當前日期的前面的時間,...
SSM筆記-SpringMVC的自定義類型轉換器
1、步驟: ①建立對應的bean和dao ②建立form表單 ③建立handler(①handler的參數需要更表單控件name值一樣 ②要用@RequestParam修飾方法的參數) ④建立converter類,且繼承org.springframework.core.convert.converter.Converter ⑤實現org.springframework.core.convert.c...
SpringMVC中數據綁定及自定義類型轉換器
這篇博客記錄一下SpringMVC中的數據綁定,以及如何自定義類型轉換器 數據綁定 Spring MVC 主框架將 ServletRequest 對象及目標方法的入參實例傳遞給 WebDataBinderFactory 實例,以創建 DataBinder 實例對象. DataBinder 調用裝配在 Spring MVC 上下文中的 ConversionService 組件進行數據類型轉換、數據格...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...