问题描述
|
我使用vaadin 6.6和joda DateTime 1.6.2
我使用如何使用带有Joda DateTime属性的DateField描述的解决方案?
值已正确设置/获取,但不幸的是我遇到了转换异常:
BeanValidationValidator内引发异常:
方法是JodaDateTime,值是java.util.Date
从日期不可分配JodaTime
JodaTime没有String构造函数
私有对象convertValue(对象值)
引发Property.ConversionException {
//尝试直接分配兼容值
如果(值==空
|| method.getType()。isAssignableFrom(value.getClass())){
返回值
}其他{
尝试{
//获取字符串构造函数
最终构造方法constr = method.getType()。getConstructor(
new Class [] {String.class});
return constr.newInstance(new Object [] {value.toString()});
} catch(final java.lang.Exception e){
抛出新的Property.ConversionException(e);
}
}
}
你有什么想法吗?
解决方法
我还没有亲自尝试过,但是从BeanValidationValidator中可以看到,您还需要扩展它并添加JodaTime和java.util.Date之间的隐式转换。
至少BeanValidationValidator.validate(Object)方法需要处理此转换。
,看看PopupDateTimeField.java
您也可以使用PropertyConverter