vaadin 8 日期字段:无法将 java.time.LocalDate 转换为 java.util.Date
vaadin8 DateField: Cannot cast java.time.LocalDate to java.util.Date
我有简单的实体(例如)
import java.util.Date;
class People implements Serializable{
...
private Date birthdate; //(getters, setters)
...}
UI代码:
final Binder<People> binder = new Binder<People>(People.class); ...
People bean=new People();
binder.setBean(bean);
DateField birthdate = new DateField("date of birth");
binder.bind(birthdate, "birthdate");
当我 select 从 UI 中的日历约会时,我得到:
Caused by: java.lang.ClassCastException: Cannot cast java.time.LocalDate to java.util.Date
at java.lang.Class.cast(Class.java:3369)
at com.vaadin.data.Binder$BindingBuilderImpl.lambda$createConverter$f6099586(Binder.java:800)
at com.vaadin.data.Converter.lambda$null$fdd4de71(Converter.java:105)
at com.vaadin.data.Result.of(Result.java:91)
我尝试使用
DateField birthdate = new DateField("birthdate");
binder.bind(birthdate, "birthdate");
binder.forField(birthdate).withConverter(new LocalDateToDateConverter());
但结果相同。
如何正确绑定Date到DateField?
问题是您如何使用 binder
。而是尝试
DateField birthdate = new DateField("birthdate");
binder.forField(birthdate).withConverter(new LocalDateToDateConverter()).bind("birthdate");
forField
方法 returns 遵循构建器设计模式的对象。这意味着您对该对象调用一些(链接的)方法并通过调用 bind
.
来完成它
我有简单的实体(例如)
import java.util.Date;
class People implements Serializable{
...
private Date birthdate; //(getters, setters)
...}
UI代码:
final Binder<People> binder = new Binder<People>(People.class); ...
People bean=new People();
binder.setBean(bean);
DateField birthdate = new DateField("date of birth");
binder.bind(birthdate, "birthdate");
当我 select 从 UI 中的日历约会时,我得到:
Caused by: java.lang.ClassCastException: Cannot cast java.time.LocalDate to java.util.Date
at java.lang.Class.cast(Class.java:3369)
at com.vaadin.data.Binder$BindingBuilderImpl.lambda$createConverter$f6099586(Binder.java:800)
at com.vaadin.data.Converter.lambda$null$fdd4de71(Converter.java:105)
at com.vaadin.data.Result.of(Result.java:91)
我尝试使用
DateField birthdate = new DateField("birthdate");
binder.bind(birthdate, "birthdate");
binder.forField(birthdate).withConverter(new LocalDateToDateConverter());
但结果相同。 如何正确绑定Date到DateField?
问题是您如何使用 binder
。而是尝试
DateField birthdate = new DateField("birthdate");
binder.forField(birthdate).withConverter(new LocalDateToDateConverter()).bind("birthdate");
forField
方法 returns 遵循构建器设计模式的对象。这意味着您对该对象调用一些(链接的)方法并通过调用 bind
.