spring mvc实现一个自定义Formatter请求参数格式化

使用场景

在Spring Boot应用中,Formatter接口用于自定义数据的格式化,比如将日期对象格式化为字符串,或者将字符串解析回日期对象。这在处理HTTP请求和响应时特别有用,尤其是在展示给用户或从用户接收特定格式的数据时。下面通过一个实际工作场景来展示如何创建自定义Formatter并应用它。

  • 与转换器区别:
    Formatter就像Converter一样,也是将一种类型转换成另一种类型。但是,Formatter的源类型必须是一个String,而Converter则适用于任意的源类型。Formatter更适合Web层,而Converter则可以用在任意层中。

代码示例

创建Formatter

java 复制代码
/**
 *  自定义日期格式化
 */
public class CustomLocalDateFormatter implements Formatter<LocalDate> {

    private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

    @Override
    public LocalDate parse(String text, Locale locale) throws ParseException {
        return LocalDate.parse(text, formatter);
    }

    @Override
    public String print(LocalDate date, Locale locale) {
        return formatter.format(date);
    }
}

注册

java 复制代码
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addFormatter(new CustomLocalDateFormatter());
    }
}

编写接口

java 复制代码
@RequestMapping("/mvc")
@RestController
public class CustomConverterController {

    @GetMapping("/formateDate")
    public String formateDate(@RequestParam LocalDate date) {
        return "Formatted Date: " + date;
    }
}

测试

浏览器输入:http://localhost:9000/mvc/formateDate?date=2023-12-23

输出:Formatted Date: 2023-12-23

如果输入的是错误格式:http://localhost:9000/mvc/formateDate?date=2023-12-45

会有400提示,说明转换失败!

相关推荐
星火开发设计22 分钟前
STL 容器:vector 动态数组的全面解析
java·开发语言·前端·c++·知识
小妖66625 分钟前
js 实现插入排序算法(希尔排序算法)
java·算法·排序算法
星火开发设计25 分钟前
标准模板库 STL:C++ 的利器 —— 容器、算法、迭代器
java·开发语言·数据结构·c++·算法·html
MX_935928 分钟前
Spring注解方式整合Mybatis
java·后端·spring·mybatis
wuqingshun31415930 分钟前
谈谈你对泛型的理解
java·开发语言·jvm
重生之后端学习38 分钟前
105. 从前序与中序遍历序列构造二叉树
java·数据结构·后端·算法·深度优先
前路不黑暗@38 分钟前
Java项目:Java脚手架项目的地图的POJO
android·java·开发语言·spring boot·学习·spring cloud·maven
2501_9269783340 分钟前
分形时空理论框架:从破缺悖论到意识宇宙的物理学新范式引言(理论概念版)--AGI理论系统基础1.1
java·服务器·前端·人工智能·经验分享·agi
西门吹雪分身40 分钟前
K8S之Pod调度
java·容器·kubernetes·k8s
弹简特40 分钟前
【JavaEE08-后端部分】SpringMVC03-SpringMVC第二大核心处理请求之Cookie/Session和获取header
java·spring boot·spring·java-ee