2012-07-26 66 views
0

我知道這個(另一個)網站上有很多類似的問題,但他們都沒有幫我解決我的問題。 我有2個檢票狀態頁面。頁面被安裝如下:wicket 1.5網址表格提交後的狀態頁

mountPage(firstPath, firstPage.class); 
mountPage(secondPath, secondPage.class); 

當第一次加載頁面第一頁時,它加載默認的構造函數和URL看起來像所需的。一旦在第一頁的形式被提交,我前進至狀態頁面secondPage如下:

Page secondPage = new secondPage(arg1, arg2); 
RequestCycle().setResponsePage(secondPage); 

雖然第二頁被安裝時,所得到的頁(secondPage)呈現與下面的網址:

context?21-1.IFormSubmitListener-componentName-childComponentName-childComponentName-someForm 

我想要的是第二頁用我定義的安裝路徑進行渲染。 我知道這是一個有狀態的頁面,爲了讓wicket加載它的確切實例,url必須是有狀態的。我不介意在url中擁有一個頁面版本和id,我只是不想在url中有這麼長的難看的組件路徑。 也,我不明白爲什麼我需要從第二頁的網址的第一頁的形式的路徑。

據我瞭解檢票1.4 HybridUrlCodingStrategy可以做類似的事情,但我找不到任何方式在檢票1.5中做到這一點。 這甚至可能與檢票口有關嗎?

任何幫助將非常感謝,因爲這真的阻止我,我已經花了太多時間試圖解決它沒有運氣。

回答

0

嘗試更換:

Page secondPage = new secondPage(arg1, arg2); 
RequestCycle().setResponsePage(secondPage); 

有:

RequestCycle().setResponsePage(secondPage.class); 

工作應該從我的頭頂......

編輯: 只注意到你逝去的參數,在這種情況下,您需要將secondPage更改爲如下形式:

class secondPage extends WebPage 
{ 
    public secondPage(PageParameters params) //Instead of secondPage(Type1 arg1, Type2 arg2) 
    { 
     arg1Type arg1 = params.get(0).to*{arg1Type}*(); 
     arg2Type arg2 = params.get(1).to*{arg2Type}*(); 
    } 
} 

,然後調用:

PageParameters params = new PageParameters(); 
params.set(0, arg1); 
params.set(1, arg1); 
RequestCycle().setResponsePage(secondPage.class, params); 
+0

你的建議,問題是ARG1和ARG2是複雜的Java對象,而PageParameters只處理的StringValue,所以每當我嘗試添加/讓我的參數傳遞給了PageParameters我得到一個ClassCastException。 – zuckermanori 2012-07-26 14:12:16

+0

公平的,我發現這個:http://apache-wicket.1842946.n4.nabble.com/Object-in-PageParameters-td1870381.html它基本上建議傳遞一個唯一的ID可以用來重建參數。如果你不能將對象保存到數據庫並檢索它,請嘗試序列化它...不理想,你也可以嘗試這樣的東西:http://stackoverflow.com/questions/8602489/delete-version-number- in-url – Jamey 2012-07-26 15:06:05

+0

首先你可以同時擁有兩個構造函數,一個帶有parmas調用第二個構造函數。 – Kazaag 2012-07-26 18:35:00