有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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

我看过很多东西,我看不出我所做的与维基或其他例子所显示的有什么不同

感谢您的帮助

谢谢

-詹姆斯


共 (2) 个答案

  1. # 1 楼答案

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

    除此之外,您可以通过getRequestCycle().getRequest().getRequestParameters()访问requestparameters,而无需使用带有pageparameters的构造函数,但只要您希望wicket管理和装载页面和参数,并使其可作为书签,就必须提供默认构造函数,无论是否带有pageparameters,根据您是否需要接收参数

  2. # 2 楼答案

    你可以试试这个

    @Override
    public void init()
    {
        super.init();
    
        mountPage("requirement", RequirementPage.class);
    }
    

    然后像这样调用url“http://localhost:8080/requrement?id=111“然后你可以通过构造器获得id。但是你可以像这样使用网页构造器

    public RequirementPage(PageParameters parameters)
    {
     ...
    }