Преобразование объекта при отправке формы для моего конкретного случая c больше не работает после перехода с 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;
}
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>
Контроллер. java:
@PostMapping
public String post( @ModelAttribute final SearchForm searchForm ) {
// ...
}
Ранее с Spring Отправка формы в загрузке 2.2.7 преобразует "c" из формы HTML (выберите содержит идентификатор категории) в сущность категории в SearchForm. java
После переключения на Spring Boot 2.3.1 это больше не работает. Вместо этого в журнале отображается ошибка:
Ошибка поля в объекте searchForm в поле 'c': значение отклонено [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' в требуемый тип 'com.thevegcat.app.category.Category' для свойства 'c'; вложенное исключение: java .lang.IllegalStateException: невозможно преобразовать значение типа 'java .lang.String' в требуемый тип 'com.thevegcat.app.category.Category' для свойства 'c': нет подходящих редакторов или найдена стратегия конверсии]]