所以我有一个Wicket 9.10.0应用程序,在Java 17下运行。
顺便说一句:Wicket是一个伟大的工作,感谢每个人在这个项目上工作。
我们有一个页面管理域实体的突变,使用不同的部分来更改数据。
章节将通过使用AjaxEventBehavior("click")连接到WebMarkupContainer的链接来打开/关闭。
现在如果我打开section "family"我可以换伴侣和孩子。如果家庭成员已经存在,则在左侧显示,并在右侧的编辑组件(文本字段、日期字段)中显示。
Ajax将更新页面,删除旧成员或添加新成员。
如果我使用runtimeconconfigurationtype DEVELOPMENT,现在这是正常工作的。
然而,如果我们在部署模式下启动应用程序,那么底层属性模型中的可编辑值(例如first-/lastname)就会被清空。当我在ListenerRequestHandler(断点)中获得组件并从组件的页面查看模型时,数据已经被修改了。
所以不知何故,我错过了在第一个请求(所有的数据都在那里)和第一个ajax请求页面的数据被清空之间的点!从我的观点来看,此时数据将只是从页面缓存中检索(可能是反序列化),但它仍然应该与完全呈现和显示页面后的数据相同。
这是可复制的:在开发模式下启动工作,在部署模式下启动应用程序:不工作。
所以问题是:
- 谁在修改底层域实体中的数据?我该如何预防?
- 为什么两种运行时配置模式有区别?
任何想法/帮助或指针将非常感激。
谢谢。
好了,我发现了问题:这是在隔离数据序列化/反序列化时发现的序列化问题。如果是在开发模式下,它是可以工作的,这是非常误导的。不知道这有什么关系
所以在MappedSuperClass
上实现Serializable
解决了这个问题!
谢谢。