1

我是一个相当有经验的 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

我看了很多东西,我看不出我所做的与 wiki 或其他示例显示的有什么不同。

任何帮助表示赞赏。

谢谢,

-詹姆士

4

2 回答 2

1

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

除此之外,您可以在getRequestCycle().getRequest().getRequestParameters()没有带有页面参数的构造函数的情况下访问 requestparameters,但只要您希望 wicket 管理和安装您的页面和参数并使其可收藏,则有必要提供一个默认构造函数,带或不带页面参数,根据您是否需要接收参数。

于 2012-06-01T10:34:31.050 回答
0

你可以试试这个;

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

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

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

public RequirementPage(PageParameters parameters)
{
 ...
}
于 2012-06-04T10:56:51.380 回答