Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GET请求中将LocalDate作为参数时出现类型不匹配错误_Java_Spring_Spring Boot_Postman - Fatal编程技术网

Java GET请求中将LocalDate作为参数时出现类型不匹配错误

Java GET请求中将LocalDate作为参数时出现类型不匹配错误,java,spring,spring-boot,postman,Java,Spring,Spring Boot,Postman,我有下面的过滤器类,它有3个属性来搜索可用的书籍。我有两个搜索案例:搜索图书代码列表或按日期搜索 @Data @Builder @AllArgsConstructor @NoArgsConstructor @ToString public class BookFilter { Set<Long> bookCodes; LocalDate fromDate; LocalDate toDate; } 但我陷入了类型不匹配错误:无法从类型字符串转换为Local

我有下面的过滤器类,它有3个属性来搜索可用的书籍。我有两个搜索案例:搜索图书代码列表或按日期搜索

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class BookFilter {

    Set<Long> bookCodes;
    LocalDate fromDate;
    LocalDate toDate;

}
但我陷入了类型不匹配错误:无法从类型字符串转换为LocalDate。我缺少什么?

在LocalDate之前添加@JsonFormatpattern=dd-MM-yyyy 所以您的BookFilter类将如下所示

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class BookFilter {

    Set<Long> bookCodes;
    @JsonFormat(pattern = "dd-MM-yyyy")
    LocalDate fromDate;
    @JsonFormat(pattern = "dd-MM-yyyy")
    LocalDate toDate;

}
在LocalDate之前添加@JsonFormatpattern=dd MM yyyy 所以您的BookFilter类将如下所示

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class BookFilter {

    Set<Long> bookCodes;
    @JsonFormat(pattern = "dd-MM-yyyy")
    LocalDate fromDate;
    @JsonFormat(pattern = "dd-MM-yyyy")
    LocalDate toDate;

}
使用@RequestParam将LocalDate作为字符串发送,然后将其转换为所需的日期格式

在日期参数中使用@DateTimeFormat iso=DateTimeFormat.iso.DATE\u TIME和所需格式

此外,在此之前也有人就这一主题提出了一个非常类似的问题:

使用@RequestParam将LocalDate作为字符串发送,然后将其转换为所需的日期格式

在日期参数中使用@DateTimeFormat iso=DateTimeFormat.iso.DATE\u TIME和所需格式

此外,在此之前也有人就这一主题提出了一个非常类似的问题:


您可以使用自定义序列化程序/反序列化程序进行字符串到本地日期的转换

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM-dd-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate toDate;
添加以下依赖项后

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.9.7</version>
</dependency>
<dependency>
   <groupId>com.fasterxml.jackson.datatype</groupId>
   <artifactId>jackson-datatype-jsr310</artifactId>
   <version>2.9.7</version>
</dependency>

您可以使用自定义序列化程序/反序列化程序进行字符串到本地日期的转换

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM-dd-yyyy")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate toDate;
添加以下依赖项后

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.9.7</version>
</dependency>
<dependency>
   <groupId>com.fasterxml.jackson.datatype</groupId>
   <artifactId>jackson-datatype-jsr310</artifactId>
   <version>2.9.7</version>
</dependency>
您需要向LocalDate成员添加@JsonFormat注释

请参阅此问题:

您需要向LocalDate成员添加@JsonFormat注释


查看此问题:

谢谢您的回答。我尝试了你的说法,但仍然在类型不匹配错误中出错:无法从类型字符串转换为LocalDate。请共享堆栈跟踪。另外,请让我知道您使用的是哪种应用程序?我在spring boot应用程序中对此进行了测试,它对我很有效。谢谢你的回答。我尝试了你的说法,但仍然在类型不匹配错误中出错:无法从类型字符串转换为LocalDate。请共享堆栈跟踪。另外,请让我知道您使用的是哪种应用程序?我在spring boot应用程序中对此进行了测试,它对我起到了作用。请描述OP的问题和你的答案,代码并不意味着什么。请描述OP的问题和你的答案,代码并不意味着你的答案。我试过你怎么说,但仍然在typeMismatch错误中出错:无法从类型字符串转换为LocalDate。我使用了我问题中的相同URL谢谢你的回答。我试过你怎么说,但仍然在typeMismatch错误中出错:无法从类型字符串转换为LocalDate。我使用了与我的问题相同的URL
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class BookFilter {

    Set<Long> bookCodes;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    LocalDate fromDate;
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
    LocalDate toDate;
}