我遇到Wicket GAE sample application,
的问题问题是某些导入无法解决:
import org.apache.wicket.page.PersistentPageManager; // This one
import org.apache.wicket.util.io.IObjectStreamFactory; // and this cannot be resolved
@Override
public void init()
{
super.init();
getResourceSettings().setResourcePollFrequency(null);
WicketObjects.setObjectStreamFactory(new IObjectStreamFactory() {
@Override
public ObjectInputStream newObjectInputStream(InputStream in)
throws IOException {
return new ObjectInputStream(in);
}
@Override
public ObjectOutputStream newObjectOutputStream(OutputStream out)
throws IOException {
return new ObjectOutputStream(out);
}
});
setPageManagerProvider(new DefaultPageManagerProvider(this) {
public IPageManager get(IPageManagerContext pageManagerContext)
{
IDataStore dataStore = new HttpSessionDataStore(pageManagerContext, new PageNumberEvictionStrategy(10));
IPageStore pageStore = new DefaultPageStore(getName(), dataStore,
getCacheSize());
return new PersistentPageManager(getName(), pageStore, pageManagerContext);
}
});
// add your configuration here
}
此外,找不到getCacheSize()
方法,我使用的是Wicket版本,演示应用程序中使用的1.5-SNAPSHOT,但我也尝试了其他更高版本,但仍然无法解决,如何修复?
答案 0 :(得分:0)
此类和方法仅在 RC 版本(或早期版本)中引入,并从 1.5版本
中删除因此,您可以下载其中一个 RC 软件包或迁移到 1.5版本。
要迁移,您应该:
WicketObjects.setObjectStreamFactory...
。这将由定义pageStore
的序列化程序取代。请参阅this迁移部分。DefaultPageManagerProvider
get
方法,如下所示:@Override
public IPageManager get(IPageManagerContext context)
{
IDataStore dataStore = new HttpSessionDataStore(context,
new PageNumberEvictionStrategy(10));
IPageStore pageStore = new DefaultPageStore (
new JavaSerializer ( getName() ), dataStore,
getStoreSettings().getInmemoryCacheSize());
return new PageStoreManager(application.getName(), pageStore,
context);
}
对于进一步的迁移,您应该检查检票口migration guides。