2012-04-23 93 views
3

我在JSF 2.1项目中使用了@Viewscoped bean。奇怪的是,当我第一次得到一个页面时,这个bean显然是用所有初始参数初始化的。但是,当我浏览到另一个页面时,即使关闭了打开应用程序的浏览器选项卡,该bean也不会死亡。当我回到使用此bean的页面时,这些值与在使用此页面期间修改的值相同。此外,如果我打开另一个浏览器,如IE或Chrome,价值仍然存在! 表现得像一个sessionscoped。或者一些无用的豆,je。@Viewscoped bean在导航到另一页时未被破坏

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诠释问题的原因?

回答

1

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

在此a question有助于这个问题的答案用这个anotations

@ViewScoped 
public @Named class MyBean 

@PreDestroy作品以及弄清楚

-2

定义你的Bean。