我使用Wicket-CDI将CDI与Wicket集成。我有一个多页"向导" flow,其中用户使用标有@ConversationScoped
的bean完成各种表单。
流程运行正常,但我无法弄清楚如何重置"当我明确结束对话时的bean。我有一个"重新开始"链接:
public void onClick() {
conversation.end();
setResponsePage(WizardFlowPage1.class);
}
我已经验证了我的页面构造函数被调用并且会话获得了一个新的cid,但是被注入的会话bean与前一个流相同(所有字段都保留了它们之前的值)。
一个简单的解决方法是向bean添加reset()
方法并重置字段,但这似乎是一个黑客攻击(如果我以后添加新字段,则容易出错)。
如何在会话结束时说服CDI / Weld创建会话bean的新实例?
答案 0 :(得分:0)
事实证明,我的会话bean有一些缺少getter& amp; setter方法。 Wicket的PropertyModel允许您为方便起见而放弃。
添加吸气剂和放大器setters使其符合JavaBean conventions,并允许CDI正确地完成它的工作。