我正在寻找一些关于处理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