@ViewScoped Bean在导航到另一个页面时不会被销毁

3
我正在一个JSF 2.1项目中使用@Viewscoped bean。奇怪的是,当我第一次获取页面时,bean会被清晰地初始化为所有初始参数。但是当我导航到另一个页面,即使关闭包含该应用程序的浏览器选项卡,该bean也不会死亡。当我回到使用此bean的页面时,值与在使用此页面期间修改的值相同。而且,如果我打开另一个浏览器,如IE或Chrome,这些值仍然存在! 它的行为就像sessionscoped一样。或者某种不朽的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的注解导致了问题吗?
2个回答

1
我找到了解决方案。问题出在我的bean的Spring注释上。我使用了Spring Framework中的@Controller注释。这个注释创建了一个Singleton,所以即使我的backing bean有@ManagedBean@ViewScoped,它也只被创建了一次,并且在每个视图中都没有被销毁和重新创建。
我删除了@Controller并用@ManagedProperty替换了@Autowired进行注入,现在一切都按预期工作。
这个问题中的答案帮助我找到了解决方案。

-2

使用这些注解来定义你的 Bean

@ViewScoped
public @Named class MyBean

@PreDestroy 运行良好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接