我正在尝试跟踪我的CDI对话问题。我有一个页面,如果我通过我的应用程序采取一条路线,但不是如果我通过另一个。我认为这与谈话有关,但我无法弄清楚是什么。
工作流程如下所示:
不起作用的工作流程如下: 工作流程如下所示:
因此,两个工作流程之间的差异在于,在工作流程中,我进行了成功的编辑工作。当我在第二个编辑页面上时,我会获得增量对话ID。不工作的工作流程,会话ID总是1,但我什么也做不了!
我想要了解的事情是:
希望其中一个答案可以解决出错的问题。感谢您的任何输入
答案 0 :(得分:0)
从你写的内容来看,听起来就像是对话的启动和传播有问题。如果没有您描述的问题,用例肯定是可以实现的。您可能想在此处发布一些相关代码。
如果我的ID为1的对话,请执行某些操作然后结束 谈话,当我开始一个新的对话时 - 它的ID是什么? 1(此会话结束时)或2(下一个未使用的ID)。
未指定CDI创建新ID的方式。 Weld做了以下事情:
public class ConversationIdGenerator implements Callable<String>, Serializable {
public static final String CONVERSATION_ID_GENERATOR_ATTRIBUTE_NAME = ConversationIdGenerator.class.getName();
private static final long serialVersionUID = 8489811313900825684L;
// The next conversation ID
private final AtomicInteger id;
/**
* Creates a new conversation ID generator
*/
public ConversationIdGenerator() {
this.id = new AtomicInteger(1);
}
public String call() {
int nextId = id.getAndIncrement();
return String.valueOf(nextId);
}
}
除了谈话没有正确结束之外还有什么东西 我希望增加对话ID 看见了什么?据我所知,我正在正确地结束谈话。
不,这里没有你遗漏的东西。很可能问题出在你的代码中(这是个好消息,因为你可以改变它: - )