Я использую Wicket-CDI для интеграции CDI с Wicket. У меня есть многостраничный поток «мастера», в котором пользователь заполняет различные формы, используя компонент, помеченный @ConversationScoped
.
Поток работает нормально, но я не могу понять, как "сбросить" компонент, когда я явно заканчиваю диалог. У меня есть ссылка "начать сначала", которая делает:
public void onClick() {
conversation.end();
setResponsePage(WizardFlowPage1.class);
}
Я подтвердил, что мой конструктор страниц вызывается и что диалог получает новый cid, но диалоговый компонент, который вводится, является тем же экземпляром, что и предыдущий поток (со всеми полями, сохраняющими свои предыдущие значения). *
Простое исправление заключается в добавлении метода reset()
к компоненту и сбросе полей, но это похоже на хак (и может привести к ошибке, если я позже добавлю новое поле).
Как я могу убедить CDI / Weld создать новый экземпляр диалогового компонента по окончании разговора?