3

@Viewscoped在 JSF 2.1 项目中使用 bean。奇怪的是,当我第一次获得一个页面时,bean 显然已使用所有初始参数进行了初始化。但是当我导航到另一个页面时,即使我关闭了打开 te 应用程序的浏览器选项卡,bean 也不会死。当我返回使用该 bean 的页面时,值与在使用该页面期间修改的值相同。而且,如果我打开另一个浏览器,如 IE 或 Chrome,这些值仍然存在!!表现得像一个会话范围。或者某种永生豆,je。

bean 是这样注释的。

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.springframework.stereotype.Controller;

@Controller
@ManagedBean
@ViewScoped

public class MyBean {
  //the rest of the code.
}

为什么会这样?springframework注释可能是问题的原因吗?

4

2 回答 2

1

我找到了解决方案。问题是我在 bean 中的 spring 注释。我@Controller从 Spring Framework 中使用。这个注释创建了一个单例,所以我的支持 bean,即使它有@ManagedBeanand @ViewScoped,也只创建了一次,并且从未在每个视图中重新创建过。我删除@Controller并替换@Autowired@ManagedProperty注射,现在一切都按预期工作。

这个问题的答案有助于弄清楚

于 2012-05-08T18:10:38.790 回答
-2

使用这个注解定义你的 Bean

@ViewScoped
public @Named class MyBean

@PreDestroy效果很好。

于 2013-11-28T22:12:38.337 回答