我实际上有两个问题。两者都在相同的情况下发生,如下:
我正在使用spring和thymeleaf,我想将一个表单发布到服务器,它工作正常,但服务器无法将一些提交的数据转换为我的bean的属性类型。
表格:
<form th:action="@{/demo}}" th:object="${myBean}" method="post">
<label>date</label>
<input type="date" th:field="*{date}">
<label>type</label>
<select th:filed="*{type}">
<option th:each="type: ${types}" th:value="${type.id}" th:text="${type.name}"></option>
</select>
<button type="submit">Submit</button>
</form>
beandefinition:
@lombok.Data
public class MyBean{
private ZonedDateTime date;
private MyType type;
}
问题:
org.springframework.data.repository.CrudRepository
,因此我会考虑这一点。如果有人帮助我,我会很高兴。
答案 0 :(得分:0)
我自己解决了。
日期输入的值以字符串形式发送,即“2017-12-31”,以便能够在我的表单支持bean中使用ZonedDateTime,我必须注册自定义转换器。这是代码:
public class ZonedDateTimeConverter implements Converter<String, ZonedDateTime> {
@Override
public ZonedDateTime convert(String source) {
return ZonedDateTime.of(LocalDate.parse(source, DateTimeFormatter.ofPattern("yyyy-MM-dd")), LocalTime.of(00, 00),
ZoneId.systemDefault());
}
}
并在WebMvcConfigurer
我注册了它:
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new ZonedDateTimeConverter());
}
对于第二个问题,解决方案更简单,我唯一要做的就是使用@EnableSpringDataWebSupport
注释我的应用程序,然后为我的Entity-Beans注册一些转换器