2011-09-22 42 views
3

我需要發送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); 

    } 

編輯:我讀了一些關於「安裝」的網址,這可以工作嗎?怎麼樣?

任何想法?謝謝。

回答

13

BookMarkablePageLink有2個構造函數:一個用於連接到鏈接頁面的默認構造函數,另一個用額外參數提供鏈接PageParameters,該鏈接將調用PageParameters的構造函數。

您創建鏈接,像這樣:

PageParameters pars = new PageParameters(); 
pars.add("id", 12345); 
add(new BookmarkablePageLink("id", MyPage.class, pars); 

這還與setResponsePage方法:

PageParameters pars = new PageParameters(); 
pars.add("id", 12345); 
setResponsePage(MyPage.class, pars); 
+0

它仍然說:WicketMessage:無法創建類packagePath.OrderDetailPage頁。類沒有可見的默認構造函數。它不調用「參數」構造函數。 – anizzomc

+0

你能展示一些代碼嗎?因爲這也是我這樣做的方式。 – bert

+0

然後你的代碼出現了問題,這在你提供的代碼片段中是不可見的。自Wicket 1.0 AFAIK以來,API沒有改變。 –

相關問題