【问题标题】:'No converter found ' error while passing Date to postman将日期传递给邮递员时出现“未找到转换器”错误
【发布时间】:2020-09-06 03:29:26
【问题描述】:

我正在尝试创建约会。我正在尝试将 Date 传递给 Postman 查询,我试图制作一个转换器,但我收到了这个错误:

这是我的实体类代码:

@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;

如您所见,我已尝试进行转换,但不知道为什么它不起作用。这是我的图书馆:

我的约会DTO课程:

@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;
}

【问题讨论】:

  • 你能发布你的 com.project.rushhour.model.get.AppointmentGetDTO 课程吗?我认为您在 AppointmentGetDTO 类中没有公共 getter 和 setter。
  • @mkashi 请edit@Abhinav 建议的com.project.rushhour.model.get.AppointmentGetDTO 的问题和更新代码。这将有助于回答问题。
  • 完成。我为他们使用龙目岛,所以这不是问题
  • 由于AppointmentGetDTO 是抽象的,你需要编写自定义的反序列化器。此外,最好以文本格式而不是图像格式提供输入、错误日志等。
  • 我正在使用一个继承它的非抽象类并且我正在使用它

标签: java hibernate spring-boot serialization jackson


【解决方案1】:

添加此配置:

  @Configuration
  public class DateTimeFormatConfiguration extends WebMvcConfigurerAdapter {

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

在我的控制器中,它收到一个 ISO 格式的日期:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-09-14
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    相关资源
    最近更新 更多