java - Spring Boot将请求参数字段的日期格式更改为DTO
问题描述
我的控制器有一个GET
接受大量查询参数的端点。因此,@QueryParam
我没有创建多个,而是创建了一个CriteriaDTO
以便对我们的 Mongo 数据库执行动态查询
我的控制器端点:
@GetMapping
public List<MyObject> getAll(@Valid CriteriaDTO criteriaDTO){
return myObjectService.findAll(criteriaDTO);
}
public class CriteriaDTO {
private int offset = 0
private int limit = 20
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate minDate
// getters, setters ...
}
而且,我想传递 minDate 是具有以下格式的 URL,yyyy-MM-dd
但我需要将其转换为以下格式yyyy-MM-dd'T'HH:mm:ss.SSS
。
我的问题是:是否有任何注释或其他东西可以接受第一种格式yyyy-MM-dd
并自动将其转换为另一种格式?
要清楚,如果我拨打以下电话:
http://localhost:8080/api/myobject?minDate=2020-01-01
然后criteriaDTO.getminDate()
将返回2020-01-01'T'00:00:00.000
谢谢你的帮助 :)
解决方案
您可以通过比搜索注释魔术解决方案更简单的方式来完成此操作。
只需在 CriteriaDTO 中为 LocalDateTime 添加一个额外的 getter:
public LocalDateTime getMinDateTime() {
return this.minDate.atTime(0, 0, 0, 0);
}
并在需要时间而不是日期的任何地方使用它。
推荐阅读
- java - 在旧版 GridLayout 中更改位置的方法
- vue.js - 你如何在 Vue 中使用选择器?
- python - Correct way to manage multiple resources with context managers
- javascript - On mouseenter change background of the div and show description
- reactjs - 为什么我在使用 umd 库中的组件时会收到无效挂钩错误?
- java - 如何在另一个活动的 if-else 语句中使用来自单独活动的布尔变量
- python - 获取 Numpy 数组的对角线
- git - Jenkins Console Output Format
- python - Rank/Row Number Window Function in Python
- webpack - 防止 webpack 修改 process.env 变量