разграничение разговоров с Wicket-CDI - PullRequest
0 голосов
/ 09 марта 2012

Я использую Wicket-CDI для интеграции CDI с Wicket. У меня есть многостраничный поток «мастера», в котором пользователь заполняет различные формы, используя компонент, помеченный @ConversationScoped.

Поток работает нормально, но я не могу понять, как "сбросить" компонент, когда я явно заканчиваю диалог. У меня есть ссылка "начать сначала", которая делает:

public void onClick() {
    conversation.end();
    setResponsePage(WizardFlowPage1.class);
}

Я подтвердил, что мой конструктор страниц вызывается и что диалог получает новый cid, но диалоговый компонент, который вводится, является тем же экземпляром, что и предыдущий поток (со всеми полями, сохраняющими свои предыдущие значения). *

Простое исправление заключается в добавлении метода reset() к компоненту и сбросе полей, но это похоже на хак (и может привести к ошибке, если я позже добавлю новое поле).

Как я могу убедить CDI / Weld создать новый экземпляр диалогового компонента по окончании разговора?

1 Ответ

0 голосов
/ 11 марта 2012

Оказывается, что в моем компоненте беседы были поля, в которых отсутствовали методы получения и установки. PropertyModel от Wicket позволяет вам с легкостью обойтись без этого.

Добавление методов получения и установки позволяет ему соответствовать соглашениям JavaBean и позволяет CDI правильно выполнять свои действия.вещь.

...