如何引用带参数Wicket的页面

时间:2011-09-22 14:43:58

标签: java parameters wicket hyperlink

我需要发送Wicket链接(例如通过邮件),系统中引用实例。

例如,邮件可能包含:

来自:... @ ... 至: ...@... 主题:待定订单

... txt ...  点击此处:http://I.dont.care.the.style.of.the.linkPage.OrderDetailPage?orderId=1001 ... txt ......

我有两个OrderDetailPage的构造函数

public class OrderDetailPage extends BasePage {

public OrderDetailPage(PageParameters parameters){
    this(OrderRepository.getById(parameters.getAsInteger("orderId")), null);
}


public OrderDetailPage(Order order, WebPage back) {
       super(new CompoundPropertyModel<Order>(order));
       //Renders the page for the order received.
       //back is the page we came from. Null hides link.

       ...
    }
...
}

我不知道如何发送链接,因为我无法创建一个Bookmarkable链接,因为它查找默认构造函数...当然,我没有。

我正在为另一页做的是:

final PageParameters pars = new PageParameters();
pars.add("orderId", "1001");

BookmarkablePageLink<Void> link = new BookmarkablePageLink<Void>("alink", OrderDetailPage.class, pars); 

link.add(new Label("id", "1001"));  
add(link);

标记:

<li><a href="#" wicket:id="alink"><span wicket:id="id"/></a></li>

生成的网址是

http://localhost:8080/wicket/bookmarkable/packagePath.OrderDetailPage?orderId=1001

可以,但是,仍然不会调用“参数”构造函数。

FIX:

我解决了这个问题,但我知道解决方案不行。

public OrderDetailPage() {
        this(WicketApplication.orderRepository.get(Integer
                .parseInt(RequestCycle.get().getRequest()
                        .getRequestParameters().getParameterValue("orderId").toString())),
                null);

    }

编辑:我读过关于“挂载”网址的内容,这可行吗?怎么样?

1 个答案:

答案 0 :(得分:13)

BookMarkablePageLink有2个构造函数:一个用于连接到链接页面的默认构造函数,另一个用于提供带有PageParameters的链接的额外参数,它将使用{调用构造函数{1}}。

您可以像这样创建链接:

PageParameters

这也适用于PageParameters pars = new PageParameters(); pars.add("id", 12345); add(new BookmarkablePageLink("id", MyPage.class, pars); 方法:

setResponsePage