我需要發送Wicket鏈接(例如通過郵件),以便引用系統中的實例。如何使用參數引用頁面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.
...
}
...
}
我不知道如何發送鏈接,因爲我無法創建可收藏的鏈接,因爲它尋找默認構造函數......當然,我沒有。
什麼即時通訊做了另一頁是:
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>
生成的URL是
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);
}
編輯:我讀了一些關於「安裝」的網址,這可以工作嗎?怎麼樣?
任何想法?謝謝。
它仍然說:WicketMessage:無法創建類packagePath.OrderDetailPage頁。類沒有可見的默認構造函數。它不調用「參數」構造函數。 – anizzomc
你能展示一些代碼嗎?因爲這也是我這樣做的方式。 – bert
然後你的代碼出現了問題,這在你提供的代碼片段中是不可見的。自Wicket 1.0 AFAIK以來,API沒有改變。 –