当我访问 Wicket 应用程序的特定页面时,我收到 NotSerializedException:
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());
}
});
Wicket 将许多内容序列化到会话中,作为其处理集群方法的一部分。
Wicket 中的几乎所有内容(最终)都会扩展Component
它实现了IClusterable
这延伸了Serializable
。因此,在 Wicket 中创建的面板等组件需要可序列化。
常见的做法是创建LoadableDetachableModel
使用仅在会话中存储密钥并使用该密钥重新加载的逻辑包装普通业务对象的类。
如果您使用此类模型作为组件中的字段而不是完整的业务对象,那么您对会话内存的压力就会小得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)