在 Micronaut Kotlin 数据中使用 LocalDateTime Class DTO

Use LocalDateTime in Micronaut Kotlin Data Class DTO

我得到了这个 DTO:

@Introspected
data class SomeDTO(
        val someLocalDateTime: LocalDateTime,
        val someString: String
)

我想像这样在 Micronaut 控制器中使用它:

@Post
@Status(HttpStatus.CREATED)
fun somePostCall(
    someDTO: SomeDTO,
    authentication: Authentication
) {
    this.someMethodCall(
            someDTO.someString,
            someDTO.someLocalDateTime,
            authentication.name
    )
}

我总是遇到这个错误:

Required argument [SomeDTO someDTO] not specified

我已经尝试使用@JsonFormat、@Format 和自定义 TypeConverter(String 到 LocalDateTime)来注释 DTO 中的值,但是 none 它们起作用了。

试试看 ;-)

data class SomeDTO(
        @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
        val someLocalDateTime: LocalDateTime,
        val someString: String
)

如果你只为一个 class 做的话。 否则你也可以在全球范围内这样做。

public class Application {

    public static void main(String[] args) {
        Micronaut.run(Application.class);
    }

    @Singleton
    static class ObjectMapperBeanEventListener implements BeanCreatedEventListener<ObjectMapper> {

        @Override
        public ObjectMapper onCreated(BeanCreatedEvent<ObjectMapper> event) {
            final ObjectMapper mapper = event.getBean();
            mapper.registerModule(new JavaTimeModule());
            mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
            mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
            return mapper;
        }
    }
}