我将 Martijn 的方法用于 EntityModel
:http://wicketinaction.com/2008/09/building-a-smart-entitymodel/
我使用 EntityModel
在我的自定义 wicket session 中存储数据。
private IModel<Order> order;
private IModel<User> user;
是这样设置的:
getSession().setOrder(new EntityModel<Order>(order));
我的应用程序是一个类似向导的订单交易,大约有 7、8 个连接页面。在一些页面中,一堆对象被持久化,但不是全部。因此,EntityModel
的使用允许我仅在 session 中存储非持久化对象,而持久化对象仅持有唯一 ID。
问题是 detach()
方法从未被调用,因为该模型不在任何组件中。
- 将模型保存到 session 中是正确的方法吗?
- 我是否必须在每个模型的 session 中手动调用
detach()
?
最佳答案
将模型附加到组件通常更容易,这样 Wicket 就可以为您分离,但是对于在许多页面之间共享的模型,您当然可以这样做。这就是在数据绑定(bind)器的 AuthDataSession 中处理用户模型的方式。 ,并且我已将此策略用于其他大量共享的模型。
如果您将内容存储在 Wicket 的 WebSession 的自定义扩展中,您可以覆盖 Wicket 的 Session 的 detach()
方法。扩展中的类:
@Override
protected void detach() {
// detach the models you're holding in your custom session
// by calling all their detach methods.
super.detach();
}
关于java - 在 session 中保存模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8443781/