在JSF1.2应用程序中,我是否可以覆盖使用子类返回的会话范围的托管Bean?
阶级结构
我有一个会话范围的托管Bean,Main ViewMB
,及其子类,限制的ViewMB
:
面配置。xml
<managed-bean>
<managed-bean-name>mainViewMB</managed-bean-name>
<managed-bean-class>com.example.MainViewMB</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
问题陈述
EL表达式#{mainViewMB}
返回mainViewMB
的实例。
我想用RestrictedViewMB
的实例重新绑定名称{mainViewMB}
,以便EL表达式{mainViewMB}
为会话的其余部分返回子类的实例。
有没有办法实现我的目标?
激励范例
Main ViewMB
处理应用程序主页后面的GUI逻辑。当用户从专用登录页面进入应用程序时,我需要提供一个受限的、简化的主页视图。在子类中重写Main ViewMB
的一些属性似乎是显而易见的解决方案。
在你可以/需要做的时候手动做。
externalContext.getSessionMap().put("mainViewMB", new RestrictedViewMB());
这将一个名为main ViewMB
的新实例放入会话范围,有效地使其成为会话范围内的托管bean。
您只需要考虑到托管属性和@PostConstruct
/@PreDestroy
不是以这种方式调用的,您还必须手动执行。
我有一个会话范围的CDI托管bean: 在某个流之后,我需要从会话中删除这个bean,对于该流,我使用了以下代码,如下面的答案所示: 但是,它不起作用,仍然留在会话中。 我是否遗漏了什么?
我编写了一个会话范围的托管bean,用于在domino xpages应用程序中缓存sesion用户特定的信息,如下代码所示: 然后,我在faces配置中声明了它,使其成为会话范围的bean: 在测试bean时,我通过#{NBUser.fullUserName}使用它,它并不总是返回当前domino http会话上下文的用户,例如,我首先由用户“user1”登录并注销,然后由user2登录,bean
我用的是Mojarra 2.1。29并具有会话范围的JSF托管bean 和一个Spring的豆子: 事实上,我需要JSF中的某种自定义范围,即在满足条件时从头开始重新创建bean。有可能以某种方式做吗?通过重新创建,我的意思是在第一次创建时清理它的所有属性。
我们希望通过集成SpringCDIJSFSpringSecurity来创建web应用程序。我们已经配置了上面所有的框架,我们认为一切正常,但是在实现注销功能的过程中,我们意识到JSF的ManagedBeans并不是在应该创建的时候创建的。例如:我们已经在会话作用域中创建了托管bean,我们希望在注销并使会话无效后删除该bean。 不幸的是,在重新登录之后,托管bean实例仍然是活的(每个用户的信息
HttpSession 对象必须被限定在应用(或 servlet 上下文)级别。底层的机制,如使用 cookie 建立会话,不同的上下文可以是相同,但所引用的对象,包括该对象中的属性,决不能在容器上下文之间共享。 用一个例子来说明该要求: 如果 servlet 使用 RequestDispatcher 来调用另一个 Web 应用的 servlet,任何创建的会话和被调用 servlet 所见的必须
问题内容: 我不确定我在做什么是错误的,还是只是错过了某个地方的注释或配置项。情况如下: 我有一个JSF应用程序,其会话范围的bean名为。在创建时,此Bean 注入了一个应用程序范围的Bean引用(类型)。首次创建会话时,此方法正常。依赖项注入是通过文件中的元素完成的,如下所示: 因为序列化时让我的对象包含对象没有意义,所以我在对象中将引用标记为瞬态: 直到停止Web应用程序(在我的Tomcat