2012-05-31 46 views
1

我是一個相當有經驗的Wicket用戶,但我第一次進入1.5並且mountPage()語法擊敗了我。Wicket 1.5 PageParameters are empty

我很明顯是做錯了事,因爲我不能罰款某人有同樣問題的單一引用。所以這裏有雲:

這是我在我的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} 

當我主動要求/需求/ 0我見這樣的:

named keys: [] 
index keys: 0 
requirement: null 

我已經看了一些東西,我什麼都看不到什麼我從什麼維基,或其他的例子演示做不同的。

任何幫助表示讚賞。

感謝,

- 詹姆斯

+1

您是否試過public RequirementPage(PageParameters params){}? – bert

+0

工作。謝謝。但是,我對getPageParameters()的目的感到有點困惑,不過讓人感到沮喪並使其看起來很愚蠢。我想這並不重要。再次感謝。 –

+0

好吧,沒有。如果你看一下'Page',它有一個帶有PageParameters'的構造函數。調用該方法,'getPageParameters()'將返回所有參數。 – biziclop

回答

1

您需要提供檢票與PageParameters構造,否則有檢票來包裝這些參數,並將其提供給您的頁面沒有可能。

除此之外,您可以通過getRequestCycle().getRequest().getRequestParameters()訪問請求參數,而無需使用頁面參數的構造函數,但是就您而言,想要管理和裝載頁面和參數並使其具有書籤功能,必須提供默認構造函數,根據您是否接受參數的要求,是否帶有頁面參數。

+0

謝謝。我認爲真正的問題是我發現的所有例子都省略了構造函數聲明或者顯示了默認的構造函數。 –

+0

另一個常見的陷阱是擁有一個構造函數接受PageParameters,但不調用超級構造函數(或者在調用它時不傳遞PageParamteres)。 – peterp

0

你可以試試這個;

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

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

然後調用URL像這樣的 「http://本地主機:8080/requrement ID = 111?」 然後你就可以得到的ID與你的構造。但是你可以像這樣使用你的網頁構造器;

public RequirementPage(PageParameters parameters) 
{ 
... 
} 
相關問題