如何让 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 配合使用? 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

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

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

    我遇到的一个简单问题 我从以下 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