[英]JSF backing bean should be serializable?
我收到這些消息:
[#| 2010-07-30T11:28:32.723 + 0000 |警告| glassfish3.0.1 | javax.faces | _ThreadID = 37; _TreadName = Thread-1; |將不可序列化的屬性值設置為ViewMap :(關鍵字:MyBackingBean, value class:foo.bar.org.jsf.MyBackingBean)|#]
這些是否意味着我的JSF支持bean應該實現Serializable? 還是他們提到了其他一些問題?
是的,你理解正確。 視圖基本上存儲在會話范圍中。 會話范圍是由Servlet的HttpSession
支持的JSF。 所有會話屬性都應該實現Serializable
,這是因為普通的servlet容器可以將會話數據持久保存到硬盤中,以便能夠與群集中的其他服務器共享,或者承受重負載,或者在服務器重啟期間恢復會話。
只有在相應的類實現Serializable
才能在硬盤上存儲原始Java對象。 然后可以使用ObjectOutputStream
將它們寫入硬盤和ObjectInputStream
以從硬盤讀取它們。 servletcontainer透明地管理這一切,你實際上不需要擔心它。 JSF只是發出警告,以便您了解風險。
使用會話,應用程序或會話范圍的Bean必須是可序列化的,但使用請求范圍的Bean不必是可序列化的。 資料來源: https : //docs.oracle.com/javaee/6/tutorial/doc/gjbbk.html
是的,Backing Beans / Managed Beans基本上是為了保持視圖的狀態,因此它應該實現序列化,但UI組件可能不允許它可序列化,JSF Runitime會向您顯示錯誤/警告消息。 您可以做的一件事是在MBean中標記此類組件瞬態。
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.