目錄
- 說明
- 解決辦法
- 效果展示
說明
注意:表單提交的任何資料型別全部都是字串型別,但是后臺定義Integer型別,資料也可以封裝上,說明Spring框架內部會默認進行資料型別轉換,
解決辦法
1、自定義型別轉換器,實作Converter的介面
StringToDateConverter類:
package com.Keafmd.utils;
import org.springframework.core.convert.converter.Converter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Keafmd
*
* @ClassName: StringToDateConverter
* @Description: 把字串轉換成日期的轉換器
* @author: 牛哄哄的柯南
* @date: 2021-01-24 19:27
*/
public class StringToDateConverter implements Converter<String,Date> {
@Override
public Date convert(String s) {
if(s==null){
throw new RuntimeException("請傳入資料");
}
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
//把字串轉為日期
return dateFormat.parse(s);
} catch (ParseException e) {
throw new RuntimeException("資料型別轉換錯誤");
}
}
}
2、注冊自定義型別轉換器,在springmvc.xml組態檔中撰寫配置,
<!--配置自定義型別轉換器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.Keafmd.utils.StringToDateConverter"/>
</set>
</property>
</bean>
<!-- 開啟SpringMVC框架注解支持,注解配置spring開啟注解mvc的支持 -->
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>
效果展示
User類:
package com.Keafmd.domain;
import java.io.Serializable;
import java.util.Date;
/**
* Keafmd
*
* @ClassName: User
* @Description:
* @author: 牛哄哄的柯南
* @date: 2021-01-24 16:14
*/
public class User implements Serializable {
private String uname;
private Integer age;
private Date birthday;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "User{" +
"uname='" + uname + '\'' +
", age=" + age +
", birthday=" + birthday +
'}';
}
}
控制器代碼:
package com.Keafmd.controller;
import com.Keafmd.domain.Account;
import com.Keafmd.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Keafmd
*
* @ClassName: ParamController
* @Description:
* @author: 牛哄哄的柯南
* @date: 2021-01-24 15:57
*/
@Controller
@RequestMapping("/param")
public class ParamController {
/**
* 自定義型別轉換器
* @param user
* @return
*/
@RequestMapping("/saveUser")
public String testParam(User user){
System.out.println(user);
return "success";
}
}
jsp代碼:
<%--
Created by IntelliJ IDEA.
User: Keafmd
Date: 2021/1/24
Time: 15:55
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>請求引數系結</title>
</head>
<body>
<%--自定義型別轉換器--%>
<form action="param/saveUser" method="post">
用戶姓名:<input type="text" name="uname" /><br/>
用戶年齡:<input type="text" name="age" /><br/>
用戶生日:<input type="text" name="birthday" /><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
瀏覽器輸入:

輸出結果:
User{uname='牛哄哄的柯南', age=21, birthday=Sat Jan 01 00:00:00 CST 2000}
以上就是SpringMVC中自定義(日期)型別轉換器的全部內容,
看完如果對你有幫助,感謝點贊支持!
如果你是電腦端的話,看到右下角的 “一鍵三連” 了嗎,沒錯點它[哈哈]

加油!
共同努力!
Keafmd
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/252674.html
標籤:java
上一篇:Java8 Stream
下一篇:初學者對finally的認知
