1、简介
- Converter可以将一种类型转换成另一种类型,是任意Object之间的类型转换。
- Formatter则只能进String与任意Object对象的转换,它提供解析与格式化两种功能
- 解析:将String类型字符串转换为任意Objec对象,
- 格式化:将任意Objec对象转换为字符串进行格式化显示。
- 使用Formatter
- 实现Formatter接口定义一个类,T为要解析得到或进行格式化的数据类型。
- 在类中实现两个方法
- String print(T t,Locale locale):把T类型对象解析为字符串形式返回
- T parse(String sourse,Locale locale):由字符串解析得到T类型对象。
2、示例
2.1、实体类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package com.yl.bean; import java.util.Date; public class User { private String username; private Date date; public User() { } public String getUsername() { return username; } public void setUsername(String username) { this .username = username; } public Date getDate() { return date; } public void setDate(Date date) { this .date = date; } @Override public String toString() { return "User{" + "username='" + username + '\ '' + ", date=" + date + '}' ; } } |
2.2、控制器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | package com.yl.controller; import com.yl.bean.User; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; @Controller public class UserController { @RequestMapping ( "/stringToDate" ) public ModelAndView jsonToObject(User user){ ModelAndView modelAndView= new ModelAndView(); modelAndView.addObject( "user" ,user); modelAndView.setViewName( "success" ); System.out.println(user); return modelAndView; } } |
2.3、jsp
1 2 3 4 | < form action = "${pageContext.servletContext.contextPath}/stringToDate" method = "post" > 请输入日期(yyy-mm-dd):< input type = "text" name = "date" >< br > < button type = "submit" >提交</ button > </ form > |
2.4、数据格式化类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | package com.yl.utils; import org.springframework.format.Formatter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; /** * 日期格式化 */ public class DateFormatter implements Formatter<Date> { /** * 字符串转Date * @param text * @param locale * @return * @throws ParseException */ @Override public Date parse(String text, Locale locale) throws ParseException { SimpleDateFormat sf= new SimpleDateFormat( "yyyy-MM-dd" ); return sf.parse(text); } /** * Date转字符串 * @param date * @param locale * @return */ @Override public String print(Date date, Locale locale) { SimpleDateFormat sf= new SimpleDateFormat( "yyyy-MM-dd" ); return sf.format(date); } } |
2.5、在配置文件注册自定义数据格式化类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation=" http://www.springframework.org/schema/beans <!--指定要扫描的包--> < context:component-scan base-package = "com.yl" ></ context:component-scan > <!--配置视图解析器--> < bean id = "internalResourceViewResolver" class = "org.springframework.web.servlet.view.InternalResourceViewResolver" > < property name = "prefix" value = "/WEB-INF/pages/" ></ property > < property name = "suffix" value = ".jsp" ></ property > </ bean > <!--数据格式化工厂--> < bean id = "conversionService" class = "org.springframework.format.support.FormattingConversionServiceFactoryBean" > < property name = "formatters" > < list > <!--自定义格式化类--> < bean class = "com.yl.utils.DateFormatter" /> </ list > </ property > </ bean > <!-- 设置静态资源不过滤--> < mvc:default-servlet-handler /> <!--开启springmvc注解支持,注册自定义数据格式化类--> < mvc:annotation-driven conversion-service = "conversionService" ></ mvc:annotation-driven > </ beans > |
3、使用注解实现数据格式化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | package com.yl.bean; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; public class User { private String username; @DateTimeFormat (pattern = "yyyy-MM-dd" ) private Date date; public User() { } public String getUsername() { return username; } public void setUsername(String username) { this .username = username; } public Date getDate() { return date; } public void setDate(Date date) { this .date = date; } @Override public String toString() { return "User{" + "username='" + username + '\ '' + ", date=" + date + '}' ; } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。
- 本文固定链接: https://zxbcw.cn/post/198197/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)