![](/img/trans.png)
[英]Wicket 9: user forced to log in again when accessing a certain page for first time after deployment
[英]Running Wicket the first time
問題是某些導入無法解決:
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,但是我也嘗試了其他更高版本,但仍然無法解決,如何解決此問題?
此類和方法僅在RC版本(或更早版本)中引入,並從1.5版本中刪除
因此,您可以下載RC軟件包之一或遷移到1.5版本 。
要遷移,您應該:
WicketObjects.setObjectStreamFactory...
這將通過為pageStore
定義序列化程序來pageStore
。 請參閱此遷移部分。 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);
}
對於進一步的遷移,您應該查看wicket 遷移指南 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.