导航到另一个页面时,不会销毁@Viewscoped bean

时间:2012-04-23 23:32:52

标签: spring jsf backing-beans

我在JSF 2.1项目中使用@Viewscoped bean。奇怪的是,当我第一次得到一个页面时,bean显然是用所有初始参数初始化的。但是当我离开时,转向另一个页面,即使我关闭te app打开的浏览器选项卡,bean也不会死亡。当我返回使用此bean的页面时,其值与使用此页面时修改的值相同。而且,如果我打开另一个浏览器,如IE或Chrome,价值仍然存在! 表现得像会话。或者某种inmortal bean,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注释可能是问题的原因吗?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。问题是我在bean中的spring注释。我使用Spring Framework中的@Controller。这个注释创建了一个Singleton,所以我的支持bean,即使它有@ManagedBean@ViewScoped,只创建了一次,并且从未在每个视图中重新创建。 我删除了@Controller并将[{1}}替换为@Autowired进行注入,现在一切正常。

a question中的答案有助于弄清楚

答案 1 :(得分:-2)

使用此注释定义Bean

@ViewScoped
public @Named class MyBean

@PreDestroy效果很好。