gpt4 book ai didi

spring - 无法以 thymeleaf 形式将 'java.lang.String'类型的属性值转换为所需的 'java.time.LocalDate'类型 'date'

转载 作者:行者123 更新时间:2023-12-02 12:48:15 24 4
gpt4 key购买 nike

<form th:action="@{/hi}"  th:object="${datum}" method="post">
<p>date : <input type="date" th:field="*{date}"/> </p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>

上面表格的 Controller
@PostMapping("/hi")
fun testum(@ModelAttribute datum: Datum) {
println(datum)
}

简单的pojo类
class Datum(
@DateTimeFormat(pattern = "yyyy-MM-dd")
var date: LocalDate? = null
)

我正在尝试以表格形式发送日期,但出现此异常:
Resolved exception caused by Handler execution: org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'datum' on field 'date': rejected value [2018-06-20]; codes [typeMismatch.datum.date,typeMismatch.date,typeMismatch.java.time.LocalDate,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [datum.date,date]; arguments []; default message [date]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.time.LocalDate' for property 'date'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.time.LocalDate] for value '2018-06-20'; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2018-06-20]]

但是,如果我将类型从LocalDate更改为String,则可以正常工作。我想将窗体中的日期映射到Datum类的date属性。有人可以帮我吗?任何链接?谢谢。

此链接对我没有帮助 similar problem

最佳答案

我刚刚使用此作为 Controller 创建了您的示例:

@Controller
public class StackOverflow {

@GetMapping("/stack")
public String template(Model m) {
m.addAttribute("datum", new Datanum());
return "stackoverflow.html";
}

@PostMapping("/stack2")
public String testum(@ModelAttribute Datanum user) {
System.out.println(user.getDate());
return null;
}
}

这作为 View :
<!DOCTYPE html>
<html xmlns:th="http://www.thymleaf.org">
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<form th:action="@{/stack2}" th:object="${datum}" method="post">
<p>date : <input type="date" th:field="*{date}"/> </p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
</body>
</html>

和这个 bean
   import java.time.LocalDate;

import org.springframework.format.annotation.DateTimeFormat;

public class Datanum{
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate date;

public LocalDate getDate() {
return date;
}

public void setDate(LocalDate date) {
this.date = date;
}
}

它的工作原理是:

enter image description here

enter image description here

我看到的区别是您在Bean上使用了var
  var date: LocalDate? = null

我认为那是Java 10,不是吗?你为什么不尝试使用

像我一样做 bean ,也许可以帮到你。

代替var使用LocalDate

希望这有效

关于spring - 无法以 thymeleaf 形式将 'java.lang.String'类型的属性值转换为所需的 'java.time.LocalDate'类型 'date',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50747612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com