0

我正在使用Wicket-CDI将 CDI 与 Wicket 集成。我有一个多页“向导”流程,其中用户使用标有@ConversationScoped.

流程运行良好,但是当我明确结束对话时,我无法弄清楚如何“重置”bean。我有一个“重新开始”链接:

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

我已经验证了我的页面构造函数被调用并且会话获得了一个新的 cid,但是被注入的会话 bean 与之前的流是相同的实例(所有字段都保留了它们之前的值)。

一个简单的解决reset()方法是向 bean 添加一个方法并重置字段,但这似乎是一种 hack(如果我稍后添加一个新字段,很容易出错)。

当对话结束时,如何说服 CDI/Weld 创建对话 bean 的新实例?

4

1 回答 1

0

事实证明,我的对话 bean 有一些缺少 getter 和 setter 的字段。Wicket 的PropertyModel让您可以轻松摆脱这种情况。

添加 getter 和 setter 使其符合JavaBean 约定,并允许 CDI 正确地做它的事情。

于 2012-03-10T21:28:21.937 回答