繁体   English   中英

HTML 表单提交不适用于 Spring 引导 2.3.1

[英]HTML form submit not working with Spring Boot 2.3.1

从 Spring Boot 2.2.7 切换到 Spring Boot 2.3.1 后,针对我的具体情况提交表单后的实体转换不再起作用

类别.java

@Entity @Getter @Setter
public class Category implements Serializable {
    private Integer id;
    private String name;
}

搜索Form.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 启动 2.2.7 表单提交会将“c”从 HTML 表单(选择持有类别 ID)转换为 SearchForm.java 中的类别实体

切换到 Spring Boot 2.3.1 后,这不再起作用。 而是在日志中显示错误:

object 字段“c”上的“searchForm”字段错误:拒绝值 [424]; 代码 [typeMismatch.searchForm.c,typeMismatch.c,typeMismatch.com.thevegcat.Cate.cate]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable:代码[searchForm.c,c]; arguments []; 默认消息 [c]]; 默认消息 [无法将类型“java.lang.String”的属性值转换为属性“c”所需的类型“com.thevegcat.app.category.Category”; 嵌套异常是 java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为属性“c”所需的类型“com.thevegcat.app.category.Category”:找不到匹配的编辑器或转换策略]]

我认为这是 Spring Data Commons 的错误:

此错误影响 Spring 引导版本 2.3.1、2.2.8 和 2.1.15。

ToEntityConverter无法按预期工作。


[更新]

此错误已在 2.4.0-M1、2.3.2 和 2.2.9 上修复,但未在 2.1.16 上修复。

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM