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