如何在 Spring Boot 中全局配置`@DateTimeFormat`模式?

2024-04-08

在我的 Spring Boot 应用程序中,我有一些控制器接受日期作为查询参数:

@RestController
public class MyController {

  @GetMapping
  public ResponseEntity<?> getDataByDate(
      @RequestParam(value = "date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
      final LocalDate date) {
    return ResponseEntity.ok();
  }
}

这效果很好,我什至可以使用将参数标记为可选@RequestParam(value = "date", required = false)然后使用Optional<LocalDate>。 Spring 将处理所有这些,并在参数丢失时传递一个空的Optional。

由于我有几个使用日期作为查询参数的控制器,我想为所有控制器配置此行为LocalDate查询参数。我已经尝试过spring.mvc.date-pattern财产,但它似乎只适用于java.util.Date.

因此,在搜索网络后,我想到的最好的方法是ControllerAdvice我从此采用了answer https://stackoverflow.com/a/43726183/5391954。这个解决方案的问题是,无法处理Optional<LocalDate>不再了。感觉这是在 Spring Boot 中配置行为的错误方法。

所以我的问题是:如何全局配置模式LocalDate在Spring Boot中以惯用的方式用作查询参数?


目前这不容易实现(例如通过设置一个简单的配置属性),请参阅#5523 https://github.com/spring-projects/spring-boot/issues/5523。到目前为止我发现的最好的解决方案是注册一个Formatter<LocalDate>。这也适用于建模为的可选参数Optional<LocalDate>:

  @Bean
  public Formatter<LocalDate> localDateFormatter() {
    return new Formatter<LocalDate>() {
      @Override
      public LocalDate parse(String text, Locale locale) throws ParseException {
        return LocalDate.parse(text, DateTimeFormatter.ISO_DATE);
      }

      @Override
      public String print(LocalDate object, Locale locale) {
        return DateTimeFormatter.ISO_DATE.format(object);
      }
    };
  }

当我的建议出现时,可以使用配置属性来设置它#9930 https://github.com/spring-projects/spring-boot/pull/9930已合并。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Spring Boot 中全局配置`@DateTimeFormat`模式? 的相关文章

  • JVisualVM/JConsole 中的 System.gc() 与 GC 按钮

    我目前正在测试处理 XML 模式的概念验证原型 并围绕一个非常消耗内存的树自动机外部库 我已经获得了源代码 构建 我想绘制 真实峰值 堆 随着模式大小的增加 不同运行的内存消耗 使用的指标符合我的目的并且不会影响问题 或者至少是它的合理近似
  • Java:在 eclipse 中导出到 .jar 文件

    我正在尝试将 Eclipse 中的程序导出到 jar 文件 在我的项目中 我添加了一些图片和 PDF s 当我导出到 jar 文件时 似乎只有main已编译并导出 我的意愿是如果可能的话将所有内容导出到 jar 文件 因为这样我想将其转换为
  • Spring Boot自动装配存储库始终为空[重复]

    这个问题在这里已经有答案了 每次我进入我的服务类时 存储库似乎都没有自动连接 因为它不断抛出 NullPointerException 谁能帮我检查一下我缺少什么吗 这是我的代码 演示应用程序 java package com exampl
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • 如何在 Spring 属性中进行算术运算?

  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • 使用 Mockito 模拟某些方法,但不模拟其他方法

    有没有办法使用 Mockito 模拟类中的某些方法 而不模拟其他方法 例如 在这个 诚然是人为的 Stock我想嘲笑的班级getPrice and getQuantity 返回值 如下面的测试片段所示 但我想要getValue 执行乘法 如
  • Java实现累加器类,提供Collector

    A Collector具有三种通用类型 public interface Collector
  • 使用架构注册表对 avro 消息进行 Spring 云合约测试

    我正在查看 spring 文档和 spring github 我可以看到一些非常基本的内容examples https github com spring cloud samples spring cloud contract sample
  • Docker 和 Eureka 与 Spring Boot 无法注册客户端

    我有一个使用 Spring Boot Docker Compose Eureka 的非常简单的演示 我的服务器在端口 8671 上运行 具有以下应用程序属性 server port 8761 eureka instance prefer i
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • 是否可以使用 Java Guava 将函数应用于集合?

    我想使用 Guava 将函数应用于集合 地图等 基本上 我需要调整 a 的行和列的大小Table分别使所有行和列的大小相同 执行如下操作 Table
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • 泛型、数组和 ClassCastException

    我想这里一定发生了一些我不知道的微妙事情 考虑以下 public class Foo
  • Spring表单ModelAttribute字段验证避免400 Bad Request错误

    我有一个ArticleFormModel包含正常发送的数据html form由 Spring 使用注入 ModelAttribute注释 即 RequestMapping value edit method RequestMethod PO

随机推荐

  • 以编程方式设计 GUI - 嵌套布局和多个小部件 (Qt) 的良好实践

    我有兴趣更好地理解Qt为此我想see 如何仅以编程方式完成嵌套布局和多个小部件 GUI 的相对复杂示例 即不使用 Qt Creator 的设计 我见过几个示例代码仅演示非常简单的布局 并且几乎总是不使用头文件 事实上我见过的大多数例子 du
  • Skip 的性能(以及类似功能,如 Take)

    我刚刚看了一下源代码Skip Take NET Framework 的扩展方法 在IEnumerable
  • WPF相当于ActiveControl?

    在表单中 我可以简单地使用 ActiveControl name 来获取活动控件的名称 然而在 WPF 中这不起作用 与 Activecontrol name 等效的 WPF 命令是什么 我会选择 C 或 VB 无论哪种方式 谢谢你 有几种
  • 实体框架、AutoMapper、处理实体更新

    我最近才开始使用Entity Framework 1 0 相信我已经开始感受到大家都在谈论的痛苦了 我正在尝试使用最佳实践 因此我有一组 DTO 可以通过 AutoMapper 映射到我的实体或从我的实体映射 真正的问题是当我尝试更新对象时
  • 正则表达式,始终在末尾替换字符串的一部分

    我正在尝试替换一个字符串 以便该网址的一部分始终到达末尾 google com to the end faa google com to the end faa fee google com to the end faa fee fii 使
  • Django中获取特定半径内的所有点

    对于 Google 地图应用程序 我需要创建一个查询 在给定每个点的纬度 经度的情况下 选择数据库中位于给定纬度 经度特定半径范围内的所有项目 在 Django ORM 中是否有一种有效的方法来做到这一点 到目前为止 我想出的最好方法是选择
  • 有条件的 Spring 配置

    是否可以在 Spring 配置中使用条件表达式 例如 我想定义两个不同的连接器 如下所示 连接器 1
  • Maven:子模块无法继承父模块的依赖项

    这是我的父母 pom
  • EditText 视图返回 null

    我有两个活动 一个 主页 片段活动和一个普通的 选项 活动 在我的主页片段活动中 我尝试使用从选项活动检索的数据来更新 EditText 视图 不幸的是 由于某种原因 片段活动无法检测到我的视图以进行更新 我不太清楚为什么 这是我的功能 u
  • Android:可以获得自定义 R.id

    是否可以让 android 给我一个自定义 id 例如 如果我已经在 xml 中定义 R id some layout R drawable some drawable 有没有这样的功能 R custom id a custom id 这样
  • 如何使用 CSS 和 Javascript 缩小 HTML?

    我有一个 html 文档 其中包含 CSS 和 Javascript 无外部文件 有没有一些在线工具可以minify文档和Javascript 的占用空间非常小 我看到许多脚本有点不可读 其中所有变量和函数名称都被替换为单字母名称等 请指教
  • Java 错误:找到接口...但需要类

    我的代码中出现了一个奇怪的运行时错误 Found interface SomeInterface but class was expected 怎么会发生这种事呢 接口如何实例化 Update 回应一些答案 我正在针对同一组库进行编译和运行
  • Int 不符合协议“StringLiteralConvertible”

    我试图在天气应用程序中解析 json 但遇到了一个我无法克服的障碍 我确实在以下代码中收到错误 类型 int 不符合协议 StringLiteralConvertible 我尝试过转换 jsonResult main 但这确实给出了错误 后
  • 重命名列表框中的项目

    我想重命名列表框中选定的项目 我怎样才能做到这一点 谢谢 编辑 几年后重新审视这个问题 以下是根据您使用的 UI 框架执行此操作的方法 这假设您想要更改所选文本 ASP Net Web 表单 protected void ChangeLis
  • 忽略绝对定位视图上的触摸以允许在底层 ScrollView 上滚动

    我有一个绝对位于 ScrollView 上方的视图 即使我在顶视图内开始触摸 我也希望能够滚动 我尝试过设置onStartShouldSetResponder and onMoveShouldSetResponder在查看到false但它仍
  • 如何监控 TCP 连接的 cwnd 和 ssthresh 值? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望在通过套接字连接发送或接收数据包时确定这些值 有没有现有的工具可以做到这一点 The ss http linux die net m
  • 重新渲染图像视图之间出现白色闪光

    不确定这是否是一个大问题 但我不完全确定是否存在解决方案 创建幻灯片样式元素时 点击后图像会更改为另一个图像 已使用 React Native 的图像预取器预取 当屏幕重新渲染时会出现白色闪烁 我认为 这个问题有具体的解决办法吗 我不明白像
  • 检查Android上是否已经创建数据库

    Android 中如何知道数据库是否已创建 有人有例子吗 you will find the data in DDMS gt 数据 数据 your package name database your database name 看第二张图
  • 如何以编程方式添加容器视图

    容器视图可以通过界面编辑器轻松添加到故事板中 添加后 容器视图具有占位符视图 嵌入转场和 子 视图控制器 但是 我无法找到以编程方式添加容器视图的方法 事实上 我什至找不到一个名为UIContainerView or so Containe
  • 如何在 Spring Boot 中全局配置`@DateTimeFormat`模式?

    在我的 Spring Boot 应用程序中 我有一些控制器接受日期作为查询参数 RestController public class MyController GetMapping public ResponseEntity