JSF支持bean应该是可序列化的?

我收到这些消息:

将不可序列化的属性值设置为ViewMap:(key:MyBackingBean,值类:foo.bar.org.jsf.MyBackingBean)|#]

这是否意味着我的JSF支持bean应该实现Serializable? 还是他们提到其他一些问题呢?

是的,你理解正确。 视图基本上存储在会话范围内。 会话范围在Servlet的HttpSession支持的JSF中。 所有会话属性都应该实现Serializable ,这是因为平均servlet容器可以将会话数据持久存储在硬盘中,以便能够与群集中的其他服务器共享,或承受繁重负担,或者在服务器重新启动期间恢复会话。

在硬盘上存储原始Java对象只有在相应的类实现Serializable才有可能。 然后可以使用ObjectOutputStream将它们写入硬盘和ObjectInputStream以从硬盘读取它们。 servletcontainerpipe理这一切透明,你实际上不需要担心它。 JSF只是给出一个警告,以便你了解风险。

使用会话,应用程序或会话作用域的bean必须是可序列化的,但是使用请求作用域的bean不必是可序列化的。 来源: https : //docs.oracle.com/javaee/6/tutorial/doc/gjbbk.html

是的,支持豆/托pipe豆基本上是为了坚持视图的状态,所以它应该被实现序列化,但是UI组件可能不允许它被序列化,并且JSF Runitime会向你显示错误/警告消息。 你可以做的一件事是在MBean中标记这样的组件瞬态。

谢谢。