我正在使用Wicket-CDI将 CDI 与 Wicket 集成。我有一个多页“向导”流程,其中用户使用标有@ConversationScoped
.
流程运行良好,但是当我明确结束对话时,我无法弄清楚如何“重置”bean。我有一个“重新开始”链接:
public void onClick() {
conversation.end();
setResponsePage(WizardFlowPage1.class);
}
我已经验证了我的页面构造函数被调用并且会话获得了一个新的 cid,但是被注入的会话 bean 与之前的流是相同的实例(所有字段都保留了它们之前的值)。
一个简单的解决reset()
方法是向 bean 添加一个方法并重置字段,但这似乎是一种 hack(如果我稍后添加一个新字段,很容易出错)。
当对话结束时,如何说服 CDI/Weld 创建对话 bean 的新实例?