第一次跑Wicket

时间:2014-10-30 02:50:04

标签: java google-app-engine wicket

我遇到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,但我也尝试了其他更高版本,但仍然无法解决,如何修复?

1 个答案:

答案 0 :(得分:0)

此类和方法仅在 RC 版本(或早期版本)中引入,并从 1.5版本

中删除

因此,您可以下载其中一个 RC 软件包或迁移到 1.5版本

要迁移,您应该:

  1. 删除代码WicketObjects.setObjectStreamFactory...。这将由定义pageStore的序列化程序取代。请参阅this迁移部分。
  2. 覆盖DefaultPageManagerProvider get方法,如下所示:
  3. @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