Spring系列之字段格式化-13
2024-10-21 23:06:52
字段格式化
Spring 3 引入了一个方便的SPI,它为客户端环境的实现Formatter
提供了一个简单而健壮的替代方
Formatter
Formatter
实现字段格式化逻辑的SPI 。
package org.springframework.format.datetime;
public final class DateFormatter implements Formatter<Date> {
private String pattern;
public DateFormatter(String pattern) {
this.pattern = pattern;
}
public String print(Date date, Locale locale) {
if (date == null) {
return "";
}
return getDateFormat(locale).format(date);
}
public Date parse(String formatted, Locale locale) throws ParseException {
if (formatted.length() == 0) {
return null;
}
return getDateFormat(locale).parse(formatted);
}
protected DateFormat getDateFormat(Locale locale) {
DateFormat dateFormat = new SimpleDateFormat(this.pattern, locale);
dateFormat.setLenient(false);
return dateFormat;
}
}
注释驱动的格式
字段格式可以通过字段类型或注释进行配置。
要触发格式化,您可以使用@NumberFormat 注释字段,如以下示例所示:
public class MyModel {
@NumberFormat(style=Style.CURRENCY)
private BigDecimal decimal;
}
以下示例用于@DateTimeFormat
将 格式化java.util.Date
为 ISO 日期 (yyyy-MM-dd):
public class MyModel {
@DateTimeFormat(iso=ISO.DATE)
private Date date;
}
FormatterRegistry
这FormatterRegistry
是一个用于注册格式化程序和转换器的 SPI。
FormatterRegistrar
FormatterRegistrar
是一个 SPI,用于通过 FormatterRegistry 注册格式化程序和转换器。下面的清单显示了它的接口定义:
package org.springframework.format;
public interface FormatterRegistrar {
void registerFormatters(FormatterRegistry registry);
}
FormatterRegistrar
在为给定的格式类别(例如日期格式)注册多个相关转换器和格式器时很有用。在声明式注册不足的情况下,它也很有用——例如,当格式化程序需要在与其自身不同的特定字段类型下进行索引时,``或者在注册Printer
/Parser
对时。下一节提供有关转换器和格式化程序注册的更多信息。
在 Spring MVC 中配置格式化
请参阅Spring MVC 章节中的转换和格式化。
最新文章
- App开发(Android与php接口)之:短信验证码
- 从github拉取项目到myeclipse本地
- 基本的 HTML 标签 - 四个实例
- jQuery Attributes vs. Properties
- I2C Verilog的实现(二)
- UTF-8 BOM编码格式文件对SSI的影响
- 神奇的矩阵 NOI模拟题
- Ubuntu 下使用 ZTE ME3630 4G 模块
- 好久没有写BLOG了,人老了就开始变懒了【非技术】
- python将多个pdf合成一个
- Java线程基础(一)
- json,json对象以及js对象字面量的区别
- 手工脱壳之AsPack压缩脱壳-随机基址
- openmp
- [py]一致性hash原理
- 1.C和C++的区别
- 《软件测试自动化之道》读书笔记 之 底层的Web UI 测试
- Strom学习笔记2:Storm Maven Project-StromStack工程
- C#的几种写文件方法
- dp之混合背包poj1742(推荐)