表格提交后的wicket 1.5 url与有状态页面

时间:2012-07-26 09:22:05

标签: java url wicket wicket-1.5

我知道在这个(另一个)网站上有很多类似的问题但是没有一个能帮我解决我的问题。 我有2个wicket有状态页面。页面安装如下:

mountPage(firstPath, firstPage.class);
mountPage(secondPath, secondPage.class);

第一次加载页面firstPage时,它会使用默认构造函数加载,并且url会根据需要显示。一旦第一页中的表单被提交,我就转发到有状态页面secondPage,如下所示:

Page secondPage = new secondPage(arg1, arg2);
RequestCycle().setResponsePage(secondPage);

虽然安装了第二页,但结果页面(secondPage)使用以下URL呈现:

context?21-1.IFormSubmitListener-componentName-childComponentName-childComponentName-someForm

我想要的是使用我定义的已安装路径渲染的第二页。 我知道这是一个有状态的页面,为了让wicket加载它的确切实例,url必须是有状态的。我不介意在网址中有页面版本和ID,我只是不想在网址中有这个长丑陋的组件路径。 另外,我不明白为什么我需要第二页网址中第一页的表格路径。

据我所知,wicket 1.4 HybridUrlCodingStrategy可以做类似的事情,但我找不到任何办法在wicket 1.5中做到这一点。 这甚至可能与wicket有关吗?

任何帮助都会非常感激,因为这真的阻止了我,而且我已经花了太多时间试图解决它而没有运气。

1 个答案:

答案 0 :(得分:0)

尝试更换:

Page secondPage = new secondPage(arg1, arg2);
RequestCycle().setResponsePage(secondPage);

使用:

RequestCycle().setResponsePage(secondPage.class);

应该脱离我的头脑......

修改 刚刚注意到你传递了参数,在这种情况下你需要将secondPage改为:

class secondPage extends WebPage
{
    public secondPage(PageParameters params) //Instead of secondPage(Type1 arg1, Type2 arg2)
    {
        arg1Type arg1 = params.get(0).to*{arg1Type}*();
        arg2Type arg2 = params.get(1).to*{arg2Type}*();
    }
}

然后致电:

PageParameters params = new PageParameters();
params.set(0, arg1);
params.set(1, arg1);
RequestCycle().setResponsePage(secondPage.class, params);