与Wicket-CDI划分对话

时间:2012-03-09 00:45:53

标签: java cdi jboss-weld wicket-1.5

我使用Wicket-CDI将CDI与Wicket集成。我有一个多页"向导" flow,其中用户使用标有@ConversationScoped的bean完成各种表单。

流程运行正常,但我无法弄清楚如何重置"当我明确结束对话时的bean。我有一个"重新开始"链接:

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

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

一个简单的解决方法是向bean添加reset()方法并重置字段,但这似乎是一个黑客攻击(如果我以后添加新字段,则容易出错)。

如何在会话结束时说服CDI / Weld创建会话bean的新实例?

1 个答案:

答案 0 :(得分:0)

事实证明,我的会话bean有一些缺少getter& amp; setter方法。 Wicket的PropertyModel允许您为方便起见而放弃。

添加吸气剂和放大器setters使其符合JavaBean conventions,并允许CDI正确地完成它的工作。