Wicket 如何防止要持久化的对象被序列化?

Wicket 如何防止要持久化的对象被序列化?,wicket,Wicket,我事先道歉,承认我对Wicket缺乏理解。 我了解到使用LoadableDetachableModel将阻止对象被序列化,但是在多次运行测试之后,我可以看到它仍然被序列化(在会话超时之后或者在页面加载超时之后,有时)。我想可能我没有正确使用模型。任何帮助或指导都将不胜感激 代码如下所示: ... LoadableDetachableModel ldm = new LoadableDetachableModel<SomeSettings>() { @Ov

我事先道歉,承认我对Wicket缺乏理解。 我了解到使用LoadableDetachableModel将阻止对象被序列化,但是在多次运行测试之后,我可以看到它仍然被序列化(在会话超时之后或者在页面加载超时之后,有时)。我想可能我没有正确使用模型。任何帮助或指导都将不胜感激

代码如下所示:

    ...
    LoadableDetachableModel ldm = new LoadableDetachableModel<SomeSettings>() {
        @Override
        public SomeSettings load() {
            if (someSettingsDao == null) someSettingsDao = new SomeSettingsDao(); 

            return someSettingsDao.Retrieve("1") == null ? new SomeSettings()
                  : (SomeSettings) someSettingsDao.Retrieve("1");
        }
    };

    final Form<SomeSettings> form = new Form<SomeSettings>("someSettings", new CompoundPropertyModel<SomeSettings>(ldm)) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit() {
            if (someSettingsDao == null) someSettingsDao = new SomeSettingsDao();

            if (someSettingsDao.Retrieve("1") != null)
                someSettingsDao.Update(getModelObject());
            else
                someSettingsDao.Insert(getModelObject());

        setResponsePage(UserPanel.someSettingsPageProvider.getPageClass());
        }

    };
    ...
。。。
LoadableDetachableModel ldm=新的LoadableDetachableModel(){
@凌驾
公共设置加载(){
如果(someSettingsDao==null)someSettingsDao=new someSettingsDao();
return someSettingsDao.Retrieve(“1”)==null?new SomeSettings()
:(SomeSettings)someSettingsDao.Retrieve(“1”);
}
};
最终形式=新形式(“某些设置”,新复合属性模型(ldm)){
私有静态最终长serialVersionUID=1L;
@凌驾
受保护的void onSubmit(){
如果(someSettingsDao==null)someSettingsDao=new someSettingsDao();
如果(someSettingsDao.Retrieve(“1”)!=null)
更新(getModelObject());
其他的
someSettingsDao.Insert(getModelObject());
setResponsePage(UserPanel.someSettingsPageProvider.getPageClass());
}
};
...
这是我对模型的使用吗?或者数据是如何持久化的?
谢谢。

你说得对。当Wicket决定持久化时,数据被持久化/序列化。呈现组件/页面后,将分离所有组件和模型。这意味着可加载可分离模型将分离其内部模型,并且没有任何内容需要序列化。当然,序列化是在页面呈现之后进行的,不需要将其保存在内存中。

据我所知,LoadableDetachableModel是一个惰性模型。也就是说,在使用该对象之前不会加载该对象。但我不知道它对对象序列化的影响,因为ESettingsDAO是序列化的。它有任何SomeSettings引用吗?多亏了你们两位:)原来是另一个页面有引用。(脸掌)