我提前道歉,不可否认我在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());
}
};
...
是我对模特的使用吗?或者数据如何持久化? 感谢。
答案 0 :(得分:0)
你是对的。当Wicket决定坚持时,数据被持久化/序列化。在呈现组件/页面之后,分离所有组件和模型。这意味着可加载的可拆卸模型分离其内部模型,没有任何可序列化。当然,在呈现页面之后会进行序列化,并且不必将其保留在内存中。