java - 将日期传递给 postman 时出现“未找到转换器”错误

标签 java hibernate spring-boot serialization jackson

我正在尝试创建一个约会。我试图将 Date 传递到 Postman 查询中,我尝试制作一个转换器,但出现此错误: enter image description here

这是我的实体类代码:

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Appointment extends BaseEntity {

    @NotNull
    @Temporal(TemporalType.TIME)
    @DateTimeFormat(style = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    private Date startDate;

    @NotNull
    @Temporal(TemporalType.TIME)
    @DateTimeFormat(style = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    private Date endDate;

正如你所看到的,我尝试进行转换,但不知道为什么它不起作用。这是我的图书馆: enter image description here

我的预约DTO类(class):

@Data
@NoArgsConstructor
@AllArgsConstructor
public abstract class AppointmentDTO extends BaseDTO {

    @JsonProperty("start_date")
    private Date startDate;

    @JsonProperty("end_date")
    private Date endDate;

    @JsonProperty("user_id")
    private User user;

    private Set<Activity> activities;
}

最佳答案

添加此配置:

  @Configuration
  public class DateTimeFormatConfiguration extends WebMvcConfigurerAdapter {

   @Override
   public void addFormatters(FormatterRegistry registry) {
      DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
      registrar.setUseIsoFormat(true);
      registrar.registerFormatters(registry);
 }
}

在我的 Controller 中,它收到 ISO 格式的日期:

因此,reistrar.setUseIsoFormat(true) 确保 Spring 将日期解析为 ISO。这意味着您必须确保日期采用正确的 ISO 格式。将日期传递给存储库方法时,您不需要执行任何特殊操作,只需将其保留为字符串即可。

此外,在您的实体中,我建议您使用 LocalDateTimeLocalDate 而不是 Date

@Column(name = "student_date_of_birth")
private LocalDate studentDateOfBirth; // 2020-05-20

关于java - 将日期传递给 postman 时出现“未找到转换器”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61901678/

相关文章:

java - 需要帮助将字符串转换为十六进制字节

java ScheduledExecutorService 可运行异常处理

Java - 使用数组作为参数从另一个类调用方法

spring-boot - 启动ApplicationContext时出错。要显示自动配置报告,请在启用“调试”的情况下重新运行您的应用程序

Spring Boot - 将当前用户存储在全局变量中,并在创建 @service bean 时通过 API 调用进行初始化

amazon-web-services - AWS-SQS : How to set maxConcurrentConsumers?

java - 适合初学者的 SAML 简单示例

mysql - OneToOne 即使在 Cascade All 上也无法删除

java - eclipse Spring MVC 4 +Hibernate 和 MySQL + Tiles.xml 中的 HTTP 状态 404

mysql - Spring抛出DataAccessException后重试不起作用