Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
HtmlInputHidden with java.io.NotSerializableException_Java_Jsf 2_Serializable - Fatal编程技术网

HtmlInputHidden with java.io.NotSerializableException

HtmlInputHidden with java.io.NotSerializableException,java,jsf-2,serializable,Java,Jsf 2,Serializable,我将JSF应用程序中的上下文参数javax.faces.STATE_SAVING_METHOD从server更改为client,但现在我得到: java.io.NotSerializableException: javax.faces.component.html.HtmlInputHidden 这会中断视图渲染 由于HtmlInputHidden来自第三方jar,我自己无法实现它 有什么办法解决这个问题吗?在HtmlInputHidden声明中使用transient关键字解决: privat

我将JSF应用程序中的上下文参数javax.faces.STATE_SAVING_METHOD从
server
更改为
client
,但现在我得到:

java.io.NotSerializableException: javax.faces.component.html.HtmlInputHidden
这会中断视图渲染

由于
HtmlInputHidden
来自第三方jar,我自己无法实现它


有什么办法解决这个问题吗?

HtmlInputHidden
声明中使用
transient
关键字解决:

private transient HtmlInputHidden htmlInputHidden;

正如@millimoose所说,
saveSate()
方法控制状态;不是序列化。

HtmlInputHidden
声明中使用
transient
关键字解决:

private transient HtmlInputHidden htmlInputHidden;

正如@millimoose所说,
saveSate()
方法控制状态;不是序列化。

为什么组件首先处于视图状态?这似乎是错误的,组件树应该基于视图状态和模板重建,而不是从中反序列化。@millimoose,对不起,但我不理解你的问题。我想说的是
HtmlInputHidden
(或任何其他组件实现)一开始就不需要序列化,因此根本不需要是可序列化的。在JSF中,整个组件不是直接序列化的;您只能序列化其状态的一部分-从包装在
Serializable
对象中的
saveState()
方法返回。因此,我会尝试拨动代码/调试器,看看您是否能够找到
HtmlInputHidden
实例被序列化的原因。为什么组件首先处于视图状态?这似乎是错误的,组件树应该基于视图状态和模板重建,而不是从中反序列化。@millimoose,对不起,但我不理解你的问题。我想说的是
HtmlInputHidden
(或任何其他组件实现)一开始就不需要序列化,因此根本不需要是可序列化的。在JSF中,整个组件不是直接序列化的;您只能序列化其状态的一部分-从包装在
Serializable
对象中的
saveState()
方法返回。因此,我会尝试拨动代码/调试器,看看您是否能够找到
HtmlInputHidden
实例被序列化的原因。