java.sql.Timestamp 的 Vaadin 转换器

2024-01-05

我正在使用 PostgreSQL 数据库,时间戳列具有 java.sql.Timestamp 类。即使此类扩展了 java.util.Date,当我编辑 PopupDateFiels 时,我也会收到错误

无法将 java.util.Date 类型的值转换为模型类型类 java.sql.Timestamp。未设置转换器且类型不兼容。

默认转换器工厂无法正常工作。我试着写

dateField.setConverter(new DateToSqlDateConverter());

or

dateField.setConverter(StringToDateConverter.class);

结果相同。
通过单击日历中的某一天,我可以看到欧洲格式的有效日期和时间“23.10.2014 13.44”,但提交失败并在控制台上显示类似消息:

Caused by: com.vaadin.data.util.converter.Converter$ConversionException: Could not convert value to Timestamp
at com.vaadin.ui.AbstractField.convertToModel(AbstractField.java:725)
at com.vaadin.ui.AbstractField.getConvertedValue(AbstractField.java:811)
at com.vaadin.ui.AbstractField.commit(AbstractField.java:247)
... 42 more
Caused by: com.vaadin.data.util.converter.Converter$ConversionException: Unable to convert value of type java.util.Date to model type class java.sql.Timestamp. No converter is set and the types are not compatible.
at com.vaadin.data.util.converter.ConverterUtil.convertToModel(ConverterUtil.java:181)
at com.vaadin.ui.AbstractField.convertToModel(AbstractField.java:745)
... 45 more

我在哪里可以获得合适的转换器?谢谢你的建议。


我推荐这样的方式:

PopupDateField pdf = new PopupDateField();
Timestamp ts = new Timestamp(System.currentTimeMillis());
ObjectProperty<Timestamp> prop = new ObjectProperty<Timestamp>(ts);
pdf.setPropertyDataSource(prop);
pdf.setConverter(MyConverter.INSTANCE);

使用此转换器:

public class MyConverter implements Converter<Date, Timestamp> {

    private static final long serialVersionUID = 1L;
    public static final MyConverter INSTANCE = new MyConverter();

    @Override
    public Timestamp convertToModel(Date value,
            Class<? extends Timestamp> targetType, Locale locale)
            throws ConversionException {
        return value == null ? null : new Timestamp(value.getTime());
    }

    @Override
    public Date convertToPresentation(Timestamp value,
            Class<? extends Date> targetType, Locale locale)
            throws ConversionException {
        return new Date(value.getTime());
    }

    @Override
    public Class<Timestamp> getModelType() {
        return Timestamp.class;
    }

    @Override
    public Class<Date> getPresentationType() {
        return Date.class;
    }

    private Object readResolve() {
        return INSTANCE; // preserves singleton property
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.sql.Timestamp 的 Vaadin 转换器 的相关文章

随机推荐

  • 应用程序不响应 Windows API 事件?

    我正在开发一个项目 我想使用 python 自动化 GUI 但是我尝试自动化的 Windows 程序不响应 pyautogui 鼠标点击 制作此应用程序的公司是否有可能故意阻止 Windows API 事件 我试图自动化的特定程序是 Bla
  • Nodejs、TypeScript、ts-node-dev 和顶级等待

    在需要顶级等待之后 我现在花了一个小时寻找新错误的解决方案 到目前为止我尝试过的所有其他内容都没有解决错误 例如添加 type module 到 package json 文件 错误消息是Cannot use import statemen
  • .wav 和 .gsm 文件格式有什么区别

    我正在学习星号 在此我曾使用过语音邮件应用程序 当我尝试播放语音邮件时 我看到了以下格式的文件 wav WAV gsm 以上文件格式有什么区别 有信息关于星号维基 http www voip info org tiki index php
  • 如何在 T-SQL 中转义百分号?

    This 问题也有答案 https stackoverflow com questions 700648 escape percentage sign db2 sql 但它特别提到了 DB2 我如何搜索string using LIKE已经
  • 无法使用selenium webdriver + firefox下载PDF

    我有一个 selenium 脚本 作为其执行的一部分 需要下载 PDF 并且下载是必要的 因为稍后会使用 PDF 我已经使用配置文件首选项方法来下载文件 这在我用于开发的虚拟机上运行良好 但是当将脚本移动到实时服务器时 它似乎不想下载所需的
  • 应用程序因 EXC_BREAKPOINT 错误而崩溃

    我正在 Xcode 7 2 中制作一个应用程序 我有一个带有按钮的主菜单 该按钮有一个转到设置视图控制器的序列 设置视图控制器具有以下代码 每次我到达该视图控制器时 它都会因 EXC BREAKPOINT 错误而崩溃 有趣的是 这种情况只发
  • 如何修复调试中的 ClassNotFoundException: kotlinx.coroutines.debug.AgentPremain?

    我正在运行几个项目作为 Spring Boot 应用程序 其中一个项目特别无法启动并抛出 java lang ClassNotFoundException kotlinx coroutines debug AgentPremain at j
  • 最先进的 Java EE 调试和监控工具

    多年来我第一次深入研究 Java EE 我正在寻找有关 Java EE 调试和监视工具的建议 IDlike找到一个可以让我动态探索线程空间等的工具 我主要使用 Tomcat update 和 Java 5 老鼠 如果您无法使用VisualV
  • 选择表中除表标题行之外的行

    如何使用jquery选择html表格中除表格标题行之外的行 table thead tr th Foo th td Lorem td td Ipsum td tr thead tr th th tr table
  • 如何使用 angularjs 输入文本并渲染 html?

    我想将文本框绑定到 angularjs 变量 并让它在单独的 div 中输出渲染的 html I have div div
  • 我们可以将 Github mac 应用程序与 GitLab 一起使用吗?

    我喜欢 GitHub Mac 应用程序 我通过我的 GitHub 帐户使用它 我加入了一个 GitLab 项目 我想知道是否可以将 GitHub 应用程序与 GitLab 存储库一起使用 我找到了一个post https stackover
  • 作为特定复杂类型扩展的任何类型元素的 xsd 序列

    基本上 如果这是 NET 它会看起来像这样 ISomething string A get int B get var somethings new List
  • Canvas.drawArc() 工件

    我在自定义视图中在画布上绘制圆弧 如下所示 Paint and rectangle被定义在外部onDraw 并为了简单起见添加到其中 protected void onDraw Canvas canvas super onDraw canv
  • javascript: 有没有可以测试网速的JS?

    我将测试我的网站速度 主要是网络服务器延迟 总结一下我想要实现的目标 1 在我的网站上托管一个带有javascript的网页 http myweb com test speed html 2 我把这个网址给我的朋友 3 他们不需要做任何事情
  • 添加(不是合并!)两个行和列不相等的数据框

    我想有效地对两个数据框的条目进行求和 尽管不能保证数据框具有相同的维度或列名称 合并并不是我真正想要的 相反 我想创建一个输出对象 其中包含属于任一添加的数据帧的所有行名称和列名称 在该输出的每个位置 我想对计算值使用以下逻辑 如果行 列配
  • 如何在构建工件后运行脚本

    我正在使用 Idea 做一个小型 LeJOS 项目 一切都很好 除了我希望在编译工件后将准备好的 jar 直接传输到我的 EV3 程序块上 我有一个现成的脚本 我现在从命令行手动启动它 但是 嘿 这是21世纪了 如何让 Idea 在构建工件
  • 模拟私有财产

    假设我们有一个这样的类 class Whatever private var something false fun aMethod Int return if something 1 else 0 根据文档 http mockk io p
  • yii2 中文件未上传

    我想上传图像并将其保存到我的数据库中 这里 数据库中的字段名称是image path 当我尝试上传图像时 它显示错误 调用成员函数saveAs 在线上的非对象上 customer gt file gt saveAs uploads cust
  • EntityFrameworkCore:如何在用户第一次使用应用程序时初始化数据库并为其提供种子

    我使用 Microsoft Visual Studio 2015 和 EntityFrameworkCore 构建了一个项目 我手动播种了一些虚拟数据 并且正在开发我的解决方案 现在 我想将其部署在服务器中 但我遇到的问题是 第一次启动应用
  • java.sql.Timestamp 的 Vaadin 转换器

    我正在使用 PostgreSQL 数据库 时间戳列具有 java sql Timestamp 类 即使此类扩展了 java util Date 当我编辑 PopupDateFiels 时 我也会收到错误 无法将 java util Date