Wicket希望序列化我的Panel

Eth*_*roy 2 serialization wicket

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

java.io.NotSerializableException: my.package.MyPanel$1
Run Code Online (Sandbox Code Playgroud)

但我无法解释为什么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());
        }
    });
Run Code Online (Sandbox Code Playgroud)

Don*_*oby 5

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

几乎Wicket(最终)中的所有内容都扩展了Component哪些实现IClusterable扩展Serializable.因此,在Wicket中创建的面板等组件需要可序列化.

通常的做法是LoadableDetachableModel使用逻辑创建包装正常业务对象的类,该逻辑仅在会话中存储密钥并使用该密钥重新加载.

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