セッションサイズに壊滅的な影響を与えない、Wicket内のオブジェクトのコレクションを処理するための最良の方法に関する支援またはガイダンスを探しています。明らかに、WicketのIModelクラスのいずれかでオブジェクトをラップするのが理想的ですが、オブジェクトのコレクション(検索結果のコレクションなど)を操作するときにそれを行うための最良の方法は何ですか。
個々のオブジェクトを操作するときに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は、Candidateとして入力されたjava.util.Listを返します。