Java 什么导致会话ID增加
我正试图找出CDI对话中的一个问题。我有一个页面,如果我通过应用程序的一条路径,它就可以工作,但如果我通过另一条路径,它就不能工作。我相信这和谈话有关,但我不知道是什么 工作流程如下所示: 加载页面A 打开编辑页面A 此时,将启动一个ID为1的新对话 进行编辑和保存,返回给我一页 单击A页上的链接以加载B页 打开编辑页面B 对话以ID 2开始。在此开始时按refresh将启动ID为3的对话。其他刷新会增加会话ID。 编辑成功 不起作用的工作流程如下: 工作流程如下所示: 加载页面A 单击A页上的链接以加载B页 打开编辑页面B 对话以ID 1开始。刷新页面将告诉我对话ID仍然为1。 页面上的各种操作引发id 1异常的WELD-000321找不到要还原的对话。 因此,这两个工作流之间的区别在于,在工作工作流中,我成功地进行了编辑&当我在第二个编辑页面上时,我获得了增量会话ID。工作流程不工作,对话ID始终为1,但我什么也做不了 我想了解的是: 如果我有一个ID为1的对话,做些什么然后结束对话,当我开始一个新的对话时-它的ID是什么?1此对话已结束,或2下一个未使用的ID。 除了没有正确结束的对话之外,还有什么事情会影响我看到的递增的对话ID吗?据我所知,我正在正确地结束我的对话。Java 什么导致会话ID增加,java,jsf-2,cdi,jboss-weld,conversation-scope,Java,Jsf 2,Cdi,Jboss Weld,Conversation Scope,我正试图找出CDI对话中的一个问题。我有一个页面,如果我通过应用程序的一条路径,它就可以工作,但如果我通过另一条路径,它就不能工作。我相信这和谈话有关,但我不知道是什么 工作流程如下所示: 加载页面A 打开编辑页面A 此时,将启动一个ID为1的新对话 进行编辑和保存,返回给我一页 单击A页上的链接以加载B页 打开编辑页面B 对话以ID 2开始。在此开始时按refresh将启动ID为3的对话。其他刷新会增加会话ID。 编辑成功 不起作用的工作流程如下: 工作流程如下所示: 加载页面A 单击A页上的
希望其中一个问题的答案能让我们了解出了什么问题。感谢您的输入,听起来对话的启动和传播有问题。用例当然是可以实现的,没有您描述的问题。您可能想在这里发布一些相关代码 如果我有一个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是递增的
看到?据我所知,我正在正确地结束我的对话
不,这里没有你遗漏的东西。问题很可能出现在您的代码中,这是个好消息,因为您可以更改它:-介意发布一些代码吗?视图和支持bean?