【问题标题】:HtmlInputHidden with java.io.NotSerializableException带有 java.io.NotSerializableException 的 HtmlInputHidden
【发布时间】:2012-11-09 23:32:53
【问题描述】:

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

java.io.NotSerializableException: javax.faces.component.html.HtmlInputHidden

这会破坏视图渲染。

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

有没有办法解决这个问题?

【问题讨论】:

  • 为什么组件一开始就处于你的视图状态?这似乎是错误的,组件树应该根据视图状态和模板重建,而不是反序列化。
  • @millimoose,对不起,我不明白你的问题。
  • 我想说的是HtmlInputHidden(或任何其他组件实现)首先确实没有被序列化的业务,因此根本不需要Serializable。在 JSF 中,整个组件不是直接序列化的;您只需序列化它们的一部分状态 - 从包装在 Serializable 对象中的 saveState() 方法返回。所以我会尝试戳代码/调试器,看看你是否能找出为什么 HtmlInputHidden 实例甚至被序列化。

标签: java jsf-2 serializable


【解决方案1】:

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

private transient HtmlInputHidden htmlInputHidden;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-10
    • 2020-03-11
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2016-05-07
    • 2013-07-11
    • 2013-01-03
    相关资源
    最近更新 更多