我用的Martijn的做法爲EntityModel
:http://wicketinaction.com/2008/09/building-a-smart-entitymodel/保存模型在會議
我使用EntityModel
在我的自定義檢票會話存儲數據。
private IModel<Order> order;
private IModel<User> user;
它的設置是這樣的:
getSession().setOrder(new EntityModel<Order>(order));
我的應用程序是一個精靈般的訂單交易是在約7,8連頁。在一些頁面中,一堆對象被持久化,但不是全部。所以EntityModel
的使用允許我只在會話中存儲未被執行的對象,而持久對象只保存唯一的ID。
問題是,從來沒有調用detach()
方法,因爲該模型不在任何組件中。
- 將模型保存到會話中是否正確?
- 我必須在每個模型的會話中手動撥打
detach()
嗎?
我想到了一個會話是沒有用戶綁定實例共享。關於只保存對象的ID:如果對象具有ID,那麼'EntityModel'也會這樣。你的'RequestCycleCache'看起來很有趣,但有點像(不需要的)解決方法... – rotsch
Wicket會話綁定到用戶會話,是的。但是沒有人阻止用戶提交併發請求。因此,您必須確保User的實例綁定到請求週期(或請求,頁面或組件)而不是會話。我知道Martijn的EntityModel存儲了ID本身,但模型並不意味着在會話範圍內使用。 – sfussenegger