Wicket:避免302重定向到主页

时间:2013-04-14 07:52:59

标签: java wicket servlet-filters

我们基于wicket的网站已将主页安装为/index.html。目前,当用户在浏览器中输入www.ourdomain.com时,wicket会自动将302重定向发送到www.ourdomain.com/index.html。我想出于某些原因避免这种重定向。

我尝试了ServletFilter实施

...
request.getRequestDispatcher("/index.html").forward(request, response);
...

但这只引起了404响应。我还尝试修改StringBuffer后跟request.getRequestURL()返回的chain.doFilter(request, response);,但也没有成功。

还有什么我可以尝试让wicket返回主页(没有安装在不同路径上)的no-path-URL?

2 个答案:

答案 0 :(得分:5)

将它放在应用程序类的init()方法

    @Override
public void init() {
    super.init();
    getRequestCycleSettings().setRenderStrategy(IRequestCycleSettings.RenderStrategy.ONE_PASS_RENDER);
}

看看我的默认init()方法

    @Override
public void init() {
    super.init();
    getResourceSettings().setResourcePollFrequency(isTest() ? ONE_SECOND : null);
    getResourceSettings().setDefaultCacheDuration(isTest() ? MAXIMUM : null);
    getMarkupSettings().setCompressWhitespace(true);
    getMarkupSettings().setStripComments(true);
    getMarkupSettings().setStripWicketTags(true);
    getRequestCycleSettings().setRenderStrategy(IRequestCycleSettings.RenderStrategy.ONE_PASS_RENDER);
}

在wicket 6中使用:

getRequestCycleSettings().setRenderStrategy(RenderStrategy.ONE_PASS_RENDER);

答案 1 :(得分:2)

您可以创建挂载到index.html的类的后代类,并在Application#getHomePage

中使用它

以下是一个例子:

   public class MyApplication extends WebApplication {

        @Override
        protected void init() {
            super.init();
            ...
            mountPage("index.html", IndexPage.class);
            ...
        }

        @Override
        public Class<? extends Page> getHomePage() {
           return HomePage.class;
        }

        public static class HomePage extends IndexPage{}

    }