簡體   English   中英

JSF支持bean應該是可序列化的嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM