如何让 Wicket 7 与 Java 8 中的 java.time 配合使用?

2024-03-02

我有很多 bean,并且都使用 LocalDate 和 LocalDateTime。 Wicket 中的 DateTextField 和所有其他小部件(如 DatePicker)仅适用于 java.util.Date。有什么办法可以inject一个转换器到 Wicket 7 以便它使用 LocalDate 或 LocalDateTime?

豆子看起来像这样:

public class SomeBean {
  Long id = null;
  LocalDate since = null;
  // plus getters and setters
}

Wicket 表单当前使用CompoundPropertyModel

CompoundPropertyModel<SomeBean> model = new CompundPropertyModel<>( bean );

你可以把你的LocalDate等模型IModel<java.util.Date>, e.g.

public static class LocalDateModel implements IModel<java.util.Date> {
    private IModel<LocalDate> localDateModel;
    public LocalDateModel(IModel<LocalDate> localDateModel){
        this.localDateModel = localDateModel;
    }


    @Override
    public Date getObject() {
        return convertLocalDateToUtilDateSomehow(localDateModel.getObject());
    }

    @Override
    public void setObject(Date object) {
        localDateModel.setObject(convertUtilDateToLocalDateSomehow(object));
    }

    @Override
    public void detach() {
        localDateModel.detach();
    }
}

如果您随后将这样的模型输入到您想要使用的表单组件中,它应该可以正常工作。

如果你想要你的CompoundPropertyModel要自动提供此类包装模型,您需要扩展它并覆盖它CompoundPropertyModel#wrapOnInheritance(Component component)推断需要包装模型的方法。就像是

@Override
public <C> IWrapModel<C> wrapOnInheritance(Component component)
{
    IWrapModel<C> actualModel = super.wrapOnInheritance(component);
    if (actualModel.getObject() instanceOf LocalDate) {
        return new LocalDateModelButAlsoWrapping(actualModel);
    } else {
        return actualModel;
    }
}

Where LocalDateModelButAlsoWrapping毫不奇怪,这只是一个延伸LocalDateModel上面的例子,但它也实现了IWrapModel<T>.

如果您使用此扩展程序而不是常规扩展程序CompoundPropertyModel它会检测字段何时LocalDate并为组件提供模型(例如您的DateTextField)被包裹起来看起来像java.util.Date models.

我给你的代码片段相当脏(你可能不应该让模型对象推断其类型),因为我只是提供它来说明一般机制,所以我建议你设计自己的方法来推断对象的类型预期(例如,您可以检查是否Component参数是一个DateTextField),但这就是我能想象到的解决方案的大方向。

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

如何让 Wicket 7 与 Java 8 中的 java.time 配合使用? 的相关文章

  • 无法在 Android 10 中创建目录

    我无法在 android 10 中创建目录 它可以在 android Oreo 之前的设备上运行 我尝试了两种创建文件夹的方法 Using File mkdir File f new File Environment getExternal
  • 具有更高可见性的重写方法是良好的实践吗?

    回答这个问题 如何使用 GUI 使用 PaintComponent 初始化 GUI 然后添加基于鼠标的 GUI https stackoverflow com questions 21336141 how to gui using pain
  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • Grails 2.3.0 自动重新加载不起作用

    我最近将我们的项目升级到 grails 2 3 0 一切工作正常 除了每当我更改代码时自动重新加载都无法工作的问题 这包括所有项目工件 控制器 域 服务 gsps css 和 javascript 文件 我的旧版本 grails 可以正常工
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • 如果使用的 JVM 是 x86 或 x64,则以不同的方式解决 Maven 依赖关系?

    我设置了一个 Maven 存储库来托管一些 dll 但我需要我的 Maven 项目根据使用的 JVM 是 x86 还是 x64 下载不同的 dll 例如 在运行 x86 版本 JVM 的计算机上 我需要从存储库下载 ABC dll 作为依赖
  • Java 服务器-客户端 readLine() 方法

    我有一个客户端类和一个服务器类 如果客户端向服务器发送消息 服务器会将响应发送回客户端 然后客户端将打印它收到的所有消息 例如 如果客户端向服务器发送 A 则服务器将向客户端发送响应 1111 所以我在客户端类中使用 readLine 从服
  • Java 8 中函数式接口的使用

    这是来自的后续问题Java 8 中的 双冒号 运算符 https stackoverflow com questions 20001427 double colon operator in java 8其中 Java 允许您使用以下方式引用
  • 隐式超级构造函数 Person() 未定义。必须显式调用另一个构造函数?

    我正在开发一个项目 但收到错误 隐式超级构造函数 Person 未定义 必须显式调用另一个构造函数 我不太明白它 这是我的人物课程 public class Person public Person String name double D
  • RSA OAEP、Golang 加密、Java 解密 -BadPaddingException:解密错误

    我正在尝试解密使用 RSA OAEP 在 Golang 中加密的字符串 但出现 BadPaddingException 解密错误 很难弄清楚我错过了什么 这是Golang加密方法 func encryptString rootPEM io
  • 无法加载或查找主类,可以在命令行中使用,但不能在 IDE 中使用[重复]

    这个问题在这里已经有答案了 在将其标记为重复之前 请先听我说完 我正在尝试使用 gradle 导入一个 java 项目 功能齐全 适用于所有其他笔记本电脑 没有问题 我的项目 100 正常运行 适用于所有其他笔记本电脑 当我的笔记本电脑被重
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 挂钩 Eclipse 构建过程吗?

    我希望在 Eclipse 中按下构建按钮时能够运行一个简单的 Java 程序 目前 当我单击 构建 时 它会运行一些 JRebel 日志记录代码 我有一个程序可以解析 JRebel 日志文件并将统计信息存储在数据库中 是否可以编写一个插件或
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop
  • Android 和 Java 中绘制椭圆的区别

    在Java中由于某种原因Ellipse2D Double使用参数 height width x y 当我创建一个RectF在Android中参数是 left top right bottom 所以我对适应差异有点困惑 如果在 Java 中创

随机推荐

  • 当我更改控件的左侧位置和宽度时,如何阻止控件抽搐?

    我有一个用户可以用鼠标调整大小的控件 当它们移动到右侧时 我只需更改宽度 一切正常 但是 当它们移动左侧尺寸时 我必须更改 左侧 和 宽度 属性 控件的右侧明显抽搐 在新位置显示旧宽度 如果我使用边界同时设置左侧和宽度 它仍然会抽搐 是否将
  • 删除中不存在的地方

    我遇到的一个简单问题 我从以下 SQL 中收到语法错误 DELETE FROM Blog Category c WHERE NOT EXISTS SELECT FROM Blog Posts p WHERE p postCategory b
  • C 中数组的递归和[重复]

    这个问题在这里已经有答案了 你好 我正在学习 C 中的递归 我试图找到元素的总和 这是我的主要 int main int arr 1 2 3 4 5 int sum sum arr sum arr 4 printf nsum is d su
  • 有和/或没有类型的 AWS DynamoDB 数据?

    我正在使用aws sdk让 NodeJS 与 DynamoDB 表进行交互 这是我第一次了解 DynamoDB 当使用像这样的调用时getItem or updateItem 数据结构包括类型 如下所示 a S My string 有没有什
  • iPhone 应用程序提交到 App Store 所需的图形的完整列表

    你好 精彩的stackoverflowers 我希望这个问题在本网站的范围内 我正准备向 AppStore 提交我的第一个 iPhone 应用程序 我想确保我拥有所需的所有图形 我还想确保我有 iPad 所需的图形和成为特色 如果我幸运的话
  • 如何在 Pandas DataFrame 的几列中进行 one-hot 编码,以便稍后与 Scikit-Learn 一起使用

    假设我有以下数据 import pandas as pd data Reference 1 2 3 4 5 Brand Volkswagen Volvo Volvo Audi Volkswagen Town Berlin Berlin St
  • 验证 apk 是否为付费副本(避免应用程序盗版)

    我对 Android Play 商店完全陌生 我正在开发一个即将完成并准备发布的应用程序 但我注意到您可以将 apk 文件 购买后 复制到另一个位置 例如 SD 卡 并将其安装在另一台设备上 这是我想避免的事情 我的问题是 Google P
  • R:根据其他列填充和/或复制行

    我的问题是基于此question https stackoverflow com questions 35614425 r code programming filling missing column values down first
  • R 加载错误 - libproj.so.13:无法打开共享对象文件:没有这样的文件或目录

    我正在尝试安装 CRANs 群体遗传学包希尔夫统计 https cran r project org web packages hierfstat hierfstat pdf 但是 libproj so 13 打印出以下错误 gt inst
  • 垂直拉伸列表项目

    我正在构建一个phonegap应用程序 我有以下内容 ul li One li li Two li li Three li li Three br a Half li ul 我怎样才能使 li 元素垂直拉伸并填充页面的整个高度 因为这需要是
  • 如何在企业架构师的下拉列表中添加多个标记值?

    我正在使用企业架构师 我希望在下拉列表中显示多个值作为标记值 我只能为标记值赋予一个值 但我不知道如何为一系列选择执行此操作 我在 sparx 系统的用户指南中找不到帮助 也许我没有找到它 有什么帮助吗 谢谢 创建下拉标记值列表企业架构师
  • Xamarin.iOS 在应用程序未关闭时处理推送通知

    如果应用程序在后台使用该方法 我设法处理推送通知didReceiveRemoteNotification 如果应用程序位于前台且未关闭 是否有办法处理推送通知 谢谢 你实施了吗用户通知 https developer apple com d
  • iTunesConnect 要求我提交“年终自我资格报告”

    当我尝试提交我的应用程序进行测试时 出现了此问题 如果您使用 ATS 或调用 HTTPS 请注意 您需要提交年终自我分类报告 给美国政府 答案是肯定的 我确实会调用 https 来与我的 API 对话 我具体应该怎么做才能满足这个要求呢 什
  • 在 Django 中运行 Discord 机器人

    我想要一个访问 Django 数据库的不和谐机器人 一个明显的解决方案是有两个单独的脚本 我想知道是否有办法使不和谐机器人作为应用程序或其他东西成为 Django 的一部分 您可以在单独的线程中运行不和谐机器人 并且还可以相互设置属性 同样
  • 如何将已修补的 GNU readline 库正确链接到所有现有程序?

    我最初的问题是 我想要一种方法来区分在 vi 模式下使用 bash 时是处于 vi 命令模式还是 vi 插入模式 据我了解 从 GNU readline 7 0 开始 有一种方法可以在命令提示符中设置指示器 然而 我想要的是改变光标的形状
  • 有没有办法阻止 SqlPackage.exe 在部署脚本中设置默认文件组?

    我们正在使用 Sql Server 数据库项目通过 SqlPackage exe 从 DacPac 创建部署脚本 我们在不同的环境中设置了不同的 SQL Server 文件组 部署时 我们排除文件组 因为我们希望在默认文件组中创建对象 在数
  • 使用 Numba 处理 pandas DataFrame 时间序列的有效方法

    我有一个包含 1 500 000 行的 DataFrame 这是我从 QuantQuote com 购买的一分钟级别的股市数据 开盘价 最高价 最低价 收盘价 交易量 我正在尝试对股票市场交易策略进行一些自制的回测 直接使用 python
  • Json和Xml序列化,哪个性能更好?

    我必须在文件中存储一些配置信息 在 C 代码中 配置数据按类表示 在文件中我将以 json 或 xml 格式保存此类 那么 序列化json和xml哪个性能最好呢 好吧 我没有猜测 而是有了答案 这是测试程序 class Program st
  • 适合初学者的 SAML 简单示例

    我是 SAML v2 0 技术的初学者 我获得了理论知识 但我在 Google 上没有找到任何示例 任何人都可以为我提供简单的 SAML for v2 0 的分步示例 到目前为止我已经完成了理论部分 即它支持单点登录 and我也了解服务提供
  • 如何让 Wicket 7 与 Java 8 中的 java.time 配合使用?

    我有很多 bean 并且都使用 LocalDate 和 LocalDateTime Wicket 中的 DateTextField 和所有其他小部件 如 DatePicker 仅适用于 java util Date 有什么办法可以injec