非常好!添加 @DateTimeFormat 注解是正确的方向。这个注解主要用于处理表单提交(application/x-www-form-urlencoded)的日期格式。
完整的日期注解配置
1. DTO 中的日期字段(同时使用两个注解)
package org.jeecg.modules.demo.fence.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@Data
public class FenceDTO {
@JsonProperty(\”id\”)
private String id; // 围栏ID(对应前端的id)
private String name; // 围栏名称
private String type; // 类型名称
@JsonProperty(\”typeCode\”)
private String typeCode; // 类型代码
private String color; // 颜色
private String remark; // 备注
/**
* 创建时间
* 同时支持 JSON 和表单提交
*
* @JsonFormat: 处理 JSON 序列化/反序列化
* @DateTimeFormat: 处理表单提交的日期格式化
*/
@JsonProperty(\”createTime\”)
@JsonFormat(pattern = \”yyyy-MM-dd HH:mm:ss\”, timezone = \”GMT+8\”)
@DateTimeFormat(pattern = \”yyyy-MM-dd HH:mm:ss\”)
private LocalDateTime createTime;
@JsonProperty(\”key\”)
private String key; // 表格key(同id)
// 几何数据
private List<double[]> path; // 路径点
private Map<String, double[]> bounds; // 边界
private double[] center; // 中心点
private Double radius; // 半径
}
2. Controller 的两种接收方式
方式一:接收 JSON(使用 @RequestBody)
@PostMapping(\”/save\”)
public Map<String, Object> saveFence(@RequestBody FenceDTO fenceDTO, HttpServletRequest request) {
// @JsonFormat 注解会生效
System.out.println(\”接收到的创建时间: \” + fenceDTO.getCreateTime());
FenceDTO saved = fenceService.saveFence(fenceDTO);
Map<String, Object> result = new HashMap<>();
result.put(\”code\”, 200);
result.put(\”message\”, \”保存成功\”);
result.put(\”data\”, saved);
result

