在JSF1.2应用程序中,我可以覆盖一个子类返回的会话范围托管Bean吗?
类结构
我有一个会话作用域托管Bean,MainViewMB和它的子类RestrictedViewMB。
faces-config.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实例。
我希望用#{mainViewMB}实例重新绑定名称RestrictedViewMB,以便EL表达式#{mainViewMB}返回会话其余部分的子类实例。
有办法实现我的目标吗?
激励示例
MainViewMB处理应用程序主页后面的图形用户界面逻辑。当用户从专用登录页面进入应用程序时,我需要提供一个受限制的、简化的主页视图。在子类中覆盖MainViewMB的一些属性似乎是显而易见的解决方案。
发布于 2013-11-26 17:47:06
在你可以/需要做的时候手动做它。
externalContext.getSessionMap().put("mainViewMB", new RestrictedViewMB());这将在会话作用域中使用名称为RestrictedViewMB的新实例mainViewMB,从而有效地使其成为会话范围内的托管bean。
您只需要考虑到托管属性和@PostConstruct/@PreDestroy不是以这种方式调用的,您还必须手动调用。
https://stackoverflow.com/questions/20224092
复制相似问题