如何在 Vaadin 8 中输入时间戳
How to enter timestamp in Vaadin 8
我正在尝试使用 DateTimeField 输入 timestamp 但在我的实体中我有 java.sql.timestamp 。将日期时间字段转换为时间戳时出现错误
转化类
package com.vaadin.convertor;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import com.vaadin.data.Converter;
import com.vaadin.data.Result;
import com.vaadin.data.ValueContext;
@SuppressWarnings("serial")
public class StringTimestampConvertor implements Converter<LocalDateTime,
Timestamp> {
@SuppressWarnings("unchecked")
public Result<Timestamp> convertToModel(LocalDateTime value, ValueContext
context) {
Result<Timestamp> rs = (Result<Timestamp>) Timestamp.valueOf(value);
return rs;
}
@Override
public LocalDateTime convertToPresentation(Timestamp value, ValueContext
context) {
// TODO Auto-generated method stub
return null;
}
}
这是错误,无法将时间戳转换为结果
你有两种可能:
- 评估以更改实体中的日期类型
- 管理日期的转换
如果选择第二条路径,你要知道Vaadin 8 DateTimeField管理的类型是Java 8 LocalDateTime。您可以像这样轻松地管理转换:
LocalDateTime localDateTime = myField.getValue();
Timestamp timestamp = Timestamp.valueOf(localDateTime);
然后您将准备好名为 timestamp 的变量 java.sql.Timestamp 以在您的实体中使用。
更新:
由于您使用的是自定义转换器,因此需要将值包装到 Vaadin 转换器结果中。将您的值转换为 Result 不是解决方案,因为它们是完全不同类型的对象。你需要做这样的事情:
public Result<Timestamp> convertToModel(LocalDateTime value, ValueContext
context) {
return Result.ok(Timestamp.valueOf(value));
}
This is giving error that Timestamp cannot be casted into Result
这不是正确的转换方式(您不能将 Timestamp
class 转换为 Result
)
Result<Timestamp> rs = (Result<Timestamp>) Timestamp.valueOf(value);
你应该这样做 Result.ok(Timestamp.valueOf(value));
(Result interface)
我正在尝试使用 DateTimeField 输入 timestamp 但在我的实体中我有 java.sql.timestamp 。将日期时间字段转换为时间戳时出现错误
转化类
package com.vaadin.convertor;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import com.vaadin.data.Converter;
import com.vaadin.data.Result;
import com.vaadin.data.ValueContext;
@SuppressWarnings("serial")
public class StringTimestampConvertor implements Converter<LocalDateTime,
Timestamp> {
@SuppressWarnings("unchecked")
public Result<Timestamp> convertToModel(LocalDateTime value, ValueContext
context) {
Result<Timestamp> rs = (Result<Timestamp>) Timestamp.valueOf(value);
return rs;
}
@Override
public LocalDateTime convertToPresentation(Timestamp value, ValueContext
context) {
// TODO Auto-generated method stub
return null;
}
}
这是错误,无法将时间戳转换为结果
你有两种可能:
- 评估以更改实体中的日期类型
- 管理日期的转换
如果选择第二条路径,你要知道Vaadin 8 DateTimeField管理的类型是Java 8 LocalDateTime。您可以像这样轻松地管理转换:
LocalDateTime localDateTime = myField.getValue();
Timestamp timestamp = Timestamp.valueOf(localDateTime);
然后您将准备好名为 timestamp 的变量 java.sql.Timestamp 以在您的实体中使用。
更新:
由于您使用的是自定义转换器,因此需要将值包装到 Vaadin 转换器结果中。将您的值转换为 Result 不是解决方案,因为它们是完全不同类型的对象。你需要做这样的事情:
public Result<Timestamp> convertToModel(LocalDateTime value, ValueContext
context) {
return Result.ok(Timestamp.valueOf(value));
}
This is giving error that Timestamp cannot be casted into Result
这不是正确的转换方式(您不能将 Timestamp
class 转换为 Result
)
Result<Timestamp> rs = (Result<Timestamp>) Timestamp.valueOf(value);
你应该这样做 Result.ok(Timestamp.valueOf(value));
(Result interface)