繁体   English   中英

表单状态提交后,检票口1.5网址

[英]wicket 1.5 url after form submission with stateful page

我知道这个(另一个)网站上有很多类似的问题,但是没有一个问题帮助我。 我有2个检票口有状态页面。 页面安装如下:

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

加载页面第一页的第一次时,它加载与默认构造函数和URL看起来期望。 一旦firstPage中的表单被提交,我将转发到有状态页面secondPage,如下所示:

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

尽管安装了第二页,但结果页面(secondPage)呈现以下URL:

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

我想要的是要用我定义的安装路径呈现的secondPage。 我知道这是一个有状态的页面,为了使wicket加载它的确切实例,URL必须是有状态的。 我不介意在网址中包含页面版本和ID,我只是不想在网址中包含此冗长的丑陋组件路径。 另外,我不明白为什么我需要从第一页的secondPage的URL路径的形式。

据我了解wicket 1.4,HybridUrlCodingStrategy可以做类似的事情,但我找不到任何方法可以在wicket 1.5中做到。 这甚至可能与检票口有关吗?

任何帮助将不胜感激,因为这确实使我受阻,而且我已经花了太多时间试图解决它,但是没有运气。

尝试更换:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM