我在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注释可能是问题的原因吗?
答案 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
效果很好。