【发布时间】:2020-10-10 07:44:21
【问题描述】:
从 Spring Boot 2.2.7 切换到 Spring Boot 2.3.1 后,针对我的特定情况提交表单时的实体转换不再起作用
Category.java
@Entity @Getter @Setter
public class Category implements Serializable {
private Integer id;
private String name;
}
SearchForm.java:
@Getter @Setter
public class SearchForm implements Serializable {
private String q;
private Category c;
}
HTML 表单:
<form method="get" th:action="@{/}" th:object="${searchForm}">
<input th:field="*{q}" type="text" />
<select th:field="*{c}">
<option th:each="cat : ${categories}" th:value="${cat.id}" th:text="${cat.name}" />
</select>
</form>
Controller.java:
@PostMapping
public String post( @ModelAttribute final SearchForm searchForm ) {
// ...
}
以前使用 Spring Boot 2.2.7 表单提交会将“c”从 HTML 表单(选择持有 Category 的 ID)转换为 SearchForm.java 中的 Category 实体
切换到 Spring Boot 2.3.1 后,这不再起作用。而是在日志中显示错误:
字段“c”上的对象“searchForm”中的字段错误:拒绝值 [424];代码 [typeMismatch.searchForm.c,typeMismatch.c,typeMismatch.com.thevegcat.app.category.Category,typeMismatch];参数 [org.springframework.context.support.DefaultMessageSourceResolvable:代码 [searchForm.c,c];论据 [];默认消息 [c]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“c”所需的类型“com.thevegcat.app.category.Category”;嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为属性“c”所需的类型“com.thevegcat.app.category.Category”:找不到匹配的编辑器或转换策略]]
【问题讨论】:
-
什么是
Category? -
@Andreas - 对不起!我更新了我的问题。这是一个实体。
-
我也遇到过这样的问题stackoverflow.com/questions/62644051/…
标签: java html spring spring-boot form-submit