以下,来自于Springmvc指南第二版,第93页。

Spring的Formatter是可以将一种类型转为另一种类型。

例如用户输入的date类型可能有多种格式。

下面是才用 registrar方式注册formatter

比如:在controller中接收一个LocalDate。

    @RequestMapping("/test")
public String test(@RequestParam(required = false) LocalDate date){
System.out.println("date = " + date);
return null;
}

  注意:LocalDate,比较特殊点,不能new,前面必须要用 required=false,不用的话,spring会试图去new一个LocalDate,然后就会引发异常。

自定义Formatter:

public class LocalDateFormatter implements Formatter<LocalDate>{
private DateTimeFormatter formatter;
private String datePattern; public LocalDateFormatter(String datePattern) {
this.datePattern = datePattern;
formatter = DateTimeFormatter.ofPattern(datePattern);
} @Override
public LocalDate parse(String s, Locale locale) throws ParseException {
try {
return LocalDate.parse(s, DateTimeFormatter.ofPattern(datePattern));
}catch (Exception e){
e.printStackTrace();
throw e;
}
} @Override
public String print(LocalDate localDate, Locale locale) {
return localDate.format(formatter);
}
}

FormatterRegistrar:

public class MyFormatterRegistrar implements FormatterRegistrar{
private String datePattern; public MyFormatterRegistrar(String datePattern) {
this.datePattern = datePattern;
} @Override
public void registerFormatters(FormatterRegistry formatterRegistry) {
formatterRegistry.addFormatter(new LocalDateFormatter(datePattern));
}
}

dispatcher-servlet.xml

  <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatterRegistrars">
<set>
<bean class="registrar.MyFormatterRegistrar">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>
</bean>
</set>
</property>
</bean> <mvc:annotation-driven conversion-service="conversionService"/>

直接注册formatter,不同registrar

dispatcher-servlet.xml

    <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<set>
<bean class="formatter.LocalDateFormatter">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>
</bean>
</set>
</property>
</bean> <mvc:annotation-driven conversion-service="conversionService"/>

  

Formatter和Converter,都能转换类型

Converter是一种类型转换另一种,可以用在很多层中

Formatter是String转换另一种,适用于web层,springmvc程序中推荐使用

最新文章

  1. 火焰图分析openresty性能瓶颈
  2. 解决Regsvr32: DllRegisterServer entry point was not found
  3. ubuntu安装jdk-6u45-linux-x64-rpm.bin
  4. 转载__Android开源项目(二)
  5. 不间断图片滚动JS
  6. 用js实现简单排序算法
  7. Swift—使用try?和try!区别-备
  8. flexigrid 修改json格式
  9. 关于linux下内存使用的一些疑惑[转载]
  10. Selenium启动关闭Webdriver
  11. chrony时间同步 服务端 客户端 安装配置
  12. 【记录】Windows 操作系统常用快捷命令
  13. fork()和僵尸进程
  14. Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!
  15. About me &amp; 一些置顶的博文
  16. Microsoft .NET Core 1.0.0 VS 2015 Tooling Preview 2 Uninstall Failed
  17. ul li 的 float:left;
  18. 获取MyBatis
  19. CentOS7使用httpd apache 和firewalld打开关闭防火墙与端口
  20. net资源1

热门文章

  1. Android基本组件
  2. [整理]修改git 默认编辑器为vim
  3. C++-STL:vector用法总结
  4. sql声明变量存储查询结果
  5. hadoop 2.6.0 伪分布式部署安装遇到的问题
  6. lintcode-64-合并排序数组 II
  7. 201621123033 《Java程序设计》第13周学习总结
  8. 16常用API
  9. doget,doPost在底层走的是service
  10. BZOJ4456 ZJOI2016旅行者(分治+最短路)