В приложении с калиткой на странице навигации создается новый объект страницы, вызывая конструктор новой страницы в методах onClick(). Как показано ниже.Wicket - правильная очистка компонентов страницы после обработки исключений
DisplayItem.add(new Link("edit") {
@Override
public void onClick() {
try{
setResponsePage(new ReportPage(object, getPageReference()));
} catch (CustomException e){
/// set some feedback message
}
}
});
ReportPage имеет несколько LoadableDetachableModels, PageableListViews, панели, фрагменты и т.д. Я делаю обработку исключений в конструкторе ReportPage и бросает его обратно, если происходит исключение. Ses ниже. (частичный код)
public ReportPage(final Objectm, final PageReference pr) throws CustomException{
try{
final LoadableDetachableModel<MaintReport> ldm =
new LoadableDetachableModel<MaintReport>() {
@Override
protected MaintReport load() {
return new MaintReport();
}
};
/*
Several LoadableDetachableModels, PageableListViews, Panels, Fragments etc.
*/
} catch (Exception ex){
// create Custom Exception
} finally {
// Clean up of stuff
}
Так что, если при создании страницы возникает исключение. Как мне очистить (в , наконец,)? , Должен ли я установить для всех отдельных объектов значение null? Есть ли какой-либо метод Wicket для сбора мусора (или отправить сигнал в GC)?
Спасибо
Помимо достоинства вашего вопроса, почему бы не обрабатывать логин исключения в ReportPage, поскольку эта страница знает, что пошло не так и как с этим бороться? Таким образом, у вас есть логика о странице на двух или более местах ... –
Я что-то упустил или не должен собирать сборщик мусора для таких ситуаций? – Nicktar
@RobertNiestroj У меня есть отдельный файл try..catch на странице отчета, и я регистрирую ошибку, но если я не выкидываю исключение, калитка будет генерировать исключение страницы Runtime, поскольку компоненты, помеченные на html-страницах, не отображаются , Думаю, я поправлю свой пост, чтобы добавить больше ясности. – Jay