Wicket希望序列化我的Panel

时间:2011-10-16 21:56:14

标签: serialization wicket

当我访问我的Wicket应用程序的特定页面时,我收到NotSerializableException:

java.io.NotSerializableException: my.package.MyPanel$1

但我无法解释为什么wicket应该尝试序列化 Panel 。有什么想法吗?

我不知道它是否有帮助,但这是我用来添加面板的代码:

final User profileUser = ...;
final IModel<User> loggedInUser = ...;
add(new MyPanel("panelid", new Model<MyObject>(new MyObject()))
    {
        @Override
        public boolean isVisible()
        {
            return profileUser != null && profileUser.equals(loggedInUser.getObject());
        }
    });

1 个答案:

答案 0 :(得分:5)

Wicket将许多内容序列化到会话中,作为处理群集的方法的一部分。

Wicket中的所有内容(最终)扩展Component,其中IClusterable实现Serializable扩展LoadableDetachableModel。因此,在Wicket中创建的面板等组件需要可序列化。

通常的做法是创建包含普通业务对象的{{1}}类,其逻辑只在会话中存储密钥并使用该密钥重新加载。

如果您将这些模型用作组件中的字段而不是完整的业务对象,则会使会话内存更加紧张。