2012-04-23 91 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。