Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF支持bean应该是可序列化的吗?_Java_Serialization_Jsf - Fatal编程技术网

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

Java JSF支持bean应该是可序列化的吗?,java,serialization,jsf,Java,Serialization,Jsf,我收到这些信息: [#| 2010-07-30T11:28:32.723+0000 |警告| glassfish3.0.1 | javax.faces | | | u ThreadID=37;_ThreadName=Thread-1;|设置 将不可序列化的属性值转换为 ViewMap:(键:MyBackingBean,值 类别: foo.bar.org.jsf.MyBackingBean)|#] 这是否意味着我的JSF支持bean应该实现可序列化?还是他们指的是其他问题?是的,你理解正确。视图基

我收到这些信息:

[#| 2010-07-30T11:28:32.723+0000 |警告| glassfish3.0.1 | javax.faces | | | u ThreadID=37;_ThreadName=Thread-1;|设置 将不可序列化的属性值转换为 ViewMap:(键:MyBackingBean,值 类别: foo.bar.org.jsf.MyBackingBean)|#]


这是否意味着我的JSF支持bean应该实现可序列化?还是他们指的是其他问题?

是的,你理解正确。视图基本上存储在会话范围中。会话范围在JSF中,由Servlet的。所有会话属性都应该实现,这是因为一般的servletcontainer可能会将会话数据持久化到硬盘上,以便能够与群集中的其他服务器共享,或者在重载下生存,或者在服务器重新启动期间恢复会话


只有当相应的类实现了
Serializable
时,才能在硬盘上存储原始Java对象。然后可用于将它们写入硬盘并从硬盘中读取。servletcontainer以透明的方式管理这一切,实际上您不需要担心它。JSF只是给出一个警告,以便您了解风险。

使用会话、应用程序或会话范围的bean必须是可序列化的,但使用请求范围的bean不必是可序列化的。 资料来源:

是, 支持bean/托管bean基本上是为了持久化视图的状态,因此应该实现序列化,但UI组件可能不允许序列化,JSF Runitime将向您显示错误/警告消息。 您可以做的一件事是在MBean中标记这样的组件瞬态


谢谢。

我的bean主要是视图范围。当会话被持久化时,它们也被持久化了吗?如前所述,视图存储在会话中。感谢您的澄清@BalusC,你的JSF、JavaEE答案很有价值。@AlexErohin:EJB是作为可序列化代理注入的。这里什么都不需要改变。另请参见a.o.重要提示:该部分是关于CDI托管bean的,而不是关于JSF托管bean的。请详细说明您的答案,并添加关于您提供的解决方案的更多描述。这不适用于请求或应用程序范围的JSF托管bean。至于UI组件,您不应该在比请求范围更广的范围内将UI组件指定为托管bean的实例变量。这样做简直是糟糕的设计。另见a.o。