Java 如何使seam POJO会话无效

Java 如何使seam POJO会话无效,java,jsf,seam,pojo,Java,Jsf,Seam,Pojo,我正在玩一个有会话范围的小seam应用程序。最后一种方法是以邮件形式发送。发送邮件后,如何使会话无效?现在,当用户再次调用初始url时,会话仍然有效,并且之前填写的所有表单数据仍然存在 我已经找到了如何使用对话和ejb实现这一点的示例,但没有找到POJO和会话 谢谢, RorySession.instance().invalidate() Session.instance().invalidate() 根据,您可以使用此代码使会话无效: Session.instance().invalidate

我正在玩一个有会话范围的小seam应用程序。最后一种方法是以邮件形式发送。发送邮件后,如何使会话无效?现在,当用户再次调用初始url时,会话仍然有效,并且之前填写的所有表单数据仍然存在

我已经找到了如何使用对话和ejb实现这一点的示例,但没有找到POJO和会话

谢谢, Rory

Session.instance().invalidate()

Session.instance().invalidate()

根据,您可以使用此代码使会话无效:

Session.instance().invalidate();
回答你的后续“问题”(奇怪的是,你添加了这个问题作为答案)。要在通知用户成功后关闭会话,请创建一个“确认”页面,并根据与“成功”结果关联的规则重定向到该页面。然后创建页面操作以使会话无效

<page view-id="/process/confirm.xhtml" action="#{emailManager.completeSession}">

从技术上讲,会话将在重新呈现页面时关闭,因此可能会在访问会话数据时产生时间问题,因此您可能需要修改页面参数以进行补偿。这是因为在每封电子邮件中使用一个会话基本上是“错误的”。使用对话会更好,因为有一个@End注释可以在呈现视图后结束对话,这要容易得多

当应用程序涉及多个任务时,您需要切换到使用对话,因为任务之间的任何状态都将丢失。我想这会很快发生。Seam对话旨在解决这些时间和状态管理问题。

根据您可以使用以下代码使会话无效:

Session.instance().invalidate();
回答你的后续“问题”(奇怪的是,你添加了这个问题作为答案)。要在通知用户成功后关闭会话,请创建一个“确认”页面,并根据与“成功”结果关联的规则重定向到该页面。然后创建页面操作以使会话无效

<page view-id="/process/confirm.xhtml" action="#{emailManager.completeSession}">

从技术上讲,会话将在重新呈现页面时关闭,因此可能会在访问会话数据时产生时间问题,因此您可能需要修改页面参数以进行补偿。这是因为在每封电子邮件中使用一个会话基本上是“错误的”。使用对话会更好,因为有一个@End注释可以在呈现视图后结束对话,这要容易得多

当应用程序涉及多个任务时,您需要切换到使用对话,因为任务之间的任何状态都将丢失。我想这会很快发生。这些时间和状态管理问题正是Seam对话旨在解决的问题