我想在我的网站上有一个基于 Ajax 的选项卡式界面。
我还想为每个选项卡设置一个 bean。
这些 bean 预计在进入选项卡时“出生”,而在离开选项卡时“死亡”。
重要- 选项卡之间的切换必须是 AJAX 事件,而不是整页重绘。
我认为@ViewScoped
这是这种行为的适当范围,但我被困在离开标签时杀死 bean 的问题上。据我所知,@ViewScoped
bean 只会在重定向/导航事件中死亡。
有没有合适的方法让@ViewScoped
豆子死掉?我应该使用不同的范围吗?
谢谢!
更新
阅读 BalusC 对这个问题的回答是很好的指示:
只要您与同一个视图交互(即您在 bean 操作方法中返回 void 或 null),视图范围的 bean 就会存在。当您导航到另一个视图时,例如通过单击链接或返回不同的操作结果,则视图范围的 bean 将在渲染响应结束时被丢弃,并且在下一个请求中不可用。
因此,据此,我可以从动作方法返回不同的结果并使@ViewScoped
bean 死亡。
但要做到这一点,我必须在动作方法(JSF 2隐式导航)的结果后禁用导航,我不知道该怎么做(或者这是否是实现我目标的正确方法)