Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Yêu cầu do khách hàng gửi không chính xác về mặt cú pháp khi sử dụng @DateTimeFormat

Vì bạn đang sử dụng RequestBody với một application/json loại nội dung, Spring sẽ sử dụng MappingJackson2HttpMessageConverter của nó để chuyển đổi JSON của bạn thành một đối tượng thuộc loại của bạn. Tuy nhiên, chuỗi ngày bạn cung cấp, 11/14 không khớp với bất kỳ mẫu ngày nào được định cấu hình trước và do đó nó không thể phân tích cú pháp chính xác. MappingJackson2HttpMessageConverter , hoặc cụ thể hơn là ObjectMapper thực hiện công việc, không biết gì về @DateTimeFormat , chú thích mùa xuân.

Bạn sẽ cần cho Jackson biết bạn muốn sử dụng mẫu ngày nào. Bạn có thể làm như vậy với công cụ khử lưu ngày tùy chỉnh

public class CustomDateDeserializer extends JsonDeserializer<Date> {
    @Override
    public Date deserialize(JsonParser jp, DeserializationContext ctxt)
            throws IOException, JsonProcessingException {
        SimpleDateFormat format = new SimpleDateFormat("MM/yy");
        String date = jp.getText();

        try {
            return format.parse(date);
        } catch (ParseException e) {
            throw new JsonParseException(e);
        }
    }
}

Sau đó, chỉ cần chú thích trường của bạn để Jackson biết cách giải mã hóa trường đó.

@JsonDeserialize(using = CustomDateDeserializer.class)
private Date test;

Bạn có thể sử dụng @DateTimeFormat nếu bạn đang sử dụng các tham số biểu mẫu được mã hóa url với @ModelAttribute . Spring đăng ký một số bộ chuyển đổi có thể chuyển đổi giá trị Chuỗi từ tham số yêu cầu thành Date sự vật. Điều này được mô tả trong deocumentation.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Unnesting Node gọi cơ sở dữ liệu

  2. Có bao nhiêu mục nhập trong một nút của B-Tree của Chỉ mục MySQL?

  3. Làm thế nào để kết xuất cấu trúc bảng mysql mà không có dữ liệu với một truy vấn SQL?

  4. Đầu ra UTF-8 với CakePHP

  5. Không thể tải múi giờ?