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提示,说明转换失败!

相关推荐
菜鸟233号11 分钟前
力扣213 打家劫舍II java实现
java·数据结构·算法·leetcode
panzer_maus14 分钟前
Redis简单介绍(3)-持久化的实现
java·redis·mybatis
毕设源码-邱学长20 分钟前
【开题答辩全过程】以 民宿在线预定平台的设计与实现为例,包含答辩的问题和答案
java·eclipse
蓝眸少年CY26 分钟前
(第十二篇)spring cloud之Stream消息驱动
后端·spring·spring cloud
码界奇点37 分钟前
基于SpringBoot+Vue的前后端分离外卖点单系统设计与实现
vue.js·spring boot·后端·spring·毕业设计·源代码管理
不会Android的潘潘37 分钟前
受限系统环境下的 WebView 能力演进:车载平台 Web 渲染异常的根因分析与优化实践
android·java·前端·aosp
建军啊40 分钟前
java web常见lou洞
android·java·前端
阳无41 分钟前
宝塔部署的前后端项目从IP访问改成自定义域名访问
java·前端·部署
Pluchon44 分钟前
硅基计划4.0 算法 动态规划进阶
java·数据结构·算法·动态规划
会游泳的石头1 小时前
Java 异步事务完成后的监听器:原理、实现与应用场景
java·开发语言·数据库