我正在尋找一些關於處理Wicket中對象集合的最佳方式的幫助或指導,這些對象不會對會話大小產生破壞性影響。顯然,用Wicket的IModel類包裝對象是理想的,但在處理對象集合(例如搜索結果集合)時,最好的方法是什麼。在Wicket中處理模型對象集合的正確方法是什麼?
使用LoadableDetachableModel處理單個對象時,我已經成功了,但在關閉Tomcat時,我似乎間歇性地獲取了java.io.NotSerializableException。起初,我認爲我是安全的,但拋出的異常表明不然。
這是代碼(編輯爲簡潔起見):
public class CandidateSearch extends BasicPage {
private static final long serialVersionUID = 1L;
private CandidateService service = new CandidateService();
public CandidateSearch() {
ListView<Candidate> listView = new ListView<Candidate>("candidates", service.search()){
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem<Candidate> item) {
Candidate candidate = (Candidate) item.getModelObject();
PageParameters pars = new PageParameters();
pars.add("id", candidate.getId());
Link<String> candidateLink = new BookmarkablePageLink<String>("candidateLink", CandidateDetails.class, pars);
candidateLink.add(new Label("candidateId", "ID-" + new Long(candidate.getId()).toString()));
item.add(candidateLink);
item.add(new Label("name", candidate.getFirstName() + " " + candidate.getLastName()));
item.add(new Label("location", candidate.getCity() + ", " + candidate.getState()));
}
};
add(listView);
}
}
注:service.search返回的java.util.List類型爲候選。
+1:一種可重複使用的策略,我也有時使用。 –
這是非常好的,非常有幫助。非常感謝你們倆。 – mchandler