2012-05-04 34 views
0

我們可以將整個bean放在sessionScope中。JSF sessionScope中的managedBean字段

<managed-bean> 
    <managed-bean-name>managedBeanList</managed-bean-name> 
    <managed-bean-class>com.org.SomeMBean</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 

但有類似的東西,我們可以把只在a field of that managed bean sessionScope?

像...

public class SomeMBean{ 

public String mySessionScopeVariable; // Is there any way only this field will be in sessionscope continusly and not whole bean. 

//getter setter of that variable. 
} 

回答

4

不,這是不可能的。

您應該在單獨的會話作用域bean中分隔該字段,並使用@ManagedProperty將其注入到更窄範圍的bean中。

+0

Hummmmn看起來像這樣... JSF未來版本必須有這種東西... ;)順便謝謝很多回復...... – Ketan

+1

@軟件導師:不,這不是必要的。你只是在思考一個錯誤。將會話有限範圍的數據放入一個單獨的會話範圍的託管bean中使得設計在技術上非常完美。另見http://stackoverflow.com/questions/7031885/how-to-choose-the-right-bean-scope – BalusC

1

我怎麼沒看到。我不是JSF方面的專家,但要訪問ManagedBean或任何bean中的屬性,就需要該bean,因爲該屬性在沒有該bean的情況下不能存在。如果您認爲您的託管bean正在膨脹,那麼會話大小會將重要變量設置爲null以保存內存。但除此之外,我沒有看到任何其他方式。

+0

是!我的managemd bean有很多東西。如果我把它放在會話範圍內,將使用我的記憶很多... :( 順便說一句,非常感謝回覆... – Ketan