如何防止对象被持久化?

时间:2013-05-30 06:21:31

标签: wicket

我提前道歉,不可否认我在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());
        }

    };
    ...

是我对模特的使用吗?或者数据如何持久化? 感谢。

1 个答案:

答案 0 :(得分:0)

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

相关问题