Wicket 1.5 PageParameters是空的

时间:2012-05-31 19:27:45

标签: java wicket wicket-1.5

我是一位经验丰富的Wicket用户,但是我第一次涉足1.5并且mountPage()语法正在打败我。

我显然做错了什么,因为我无法对有同样问题的人提出任何建议。所以这就是:

这就是我在init()方法中所拥有的:

@Override
public void init()
{
    super.init();

    System.out.println("mounting: /requirement/${id}");

    mountPage("/requirement/${id}", RequirementPage.class);
}

我已经通过将“需求”部分更改为其他内容并返回来验证了这一点。这是RequirementPage的(唯一)构造函数:

public RequirementPage()
{
    try
    {
        PageParameters params = getPageParameters();

        System.out.println("named keys: " + params.getNamedKeys());
        System.out.println("index keys: " + params.getIndexedCount());

        StringValue value = params.get("id");

        System.out.println("requirement: " + value);

在我的服务器控制台(Jetty8)中,我在启动时看到了这一点:

mounting: /requirement/${id}

当我向/ requirement / 0发出请求时,我看到了:

named keys: []
index keys: 0
requirement: null

我已经看了很多事情,但是从维基或其他例子所显示的内容来看,我看不出有什么不同。

感谢任何帮助。

感谢,

-James

2 个答案:

答案 0 :(得分:1)

你需要为Wicket提供一个带有PageParameters的构造函数,否则wicket不可能将这些参数包装起来并提供给你的页面。

除此之外,您可以通过getRequestCycle().getRequest().getRequestParameters()访问请求参数,而无需使用包含页面参数的构造函数,但是只要您喜欢wicket来管理和安装页面和参数并将其设为可收藏,就必须提供默认构造函数,有或没有pageparameters,根据您的接收参数要求而定。

答案 1 :(得分:0)

你可以试试这个;

@Override
public void init()
{
    super.init();

    mountPage("requirement", RequirementPage.class);
}

然后像这样调用url“http:// localhost:8080 / requrement?id = 111”然后你可以使用你的构造函数获取id。但是你可以像这样使用你的网页构造函数;

public RequirementPage(PageParameters parameters)
{
 ...
}