2011-07-05 52 views
2

我正在寫我的第一個wicket應用程序,並且今天遇到了我的第一個路障。這是問題。 我有一個包含AjaxSubmitLink的頁面。在onSubmit事件中,我使用setResponsePage加載了一個面板。Wicket - SetResponsePage callback not firing

從我的應用程序的主頁,我可以通過兩種方式導航到上述頁面 - 通過超鏈接或切換選項卡(使用來自wicket-extensions的基本ITab),兩者都調用相同的構造函數具有相同的論點。

現在如果我使用超鏈接導航到頁面,一切工作正常。但是,如果我使用選項卡導航到頁面,則AjaxSubmitLink不會加載面板。有一個Ajax請求被創建,我可以看到服務器正在處理它,但它就像沒有執行回調。

我注意到另一個奇怪的事情,在後一種情況下,firebug不會在控制檯上記錄我的Ajax請求。它在前一種情況下記錄請求就好了。

我有點難倒在這裏,任何提示,指針或輕推?

編輯:聲明鏈接的代碼。

editLink = new AjaxSubmitLink("editLink") { 
      @Override 
      protected void onSubmit(AjaxRequestTarget target, Form<?> masterForm) { 
        setResponsePage(new EditPage(programId)); 
      } 
     }; 

編輯:我檢查,不成功的Ajax調用返回302,而不是200

更新與小提琴手提出的要求:

我有點找到了一個解決方法。提琴手信息導致我搜索setResponsePage行爲,這導致我到https://issues.apache.org/jira/browse/WICKET-1703

無論如何,因爲我沒有嚴格地需要鏈接的POST請求,所以使用GET來取得所需的行爲。

使用fiddler有趣的發現:發送請求的內容類型是multipart/form-data,而不是application/x-www-form-urlencoded在錯誤的情況下。

我還是在黑暗中的實際問題,欣賞任何解釋。

+1

'setResponsePage()'使用的網頁,而不是Web組件(在這種情況下面板)。我們可以看到一些代碼來幫助你嗎? – Marcelo

+0

提供的代碼。我不確定要發佈哪個部分。另外小提琴手告訴我,請求返回302。 – Sans

+0

如果你所做的只是重定向到不同的頁面,那麼使用AjaxSubmitLink的目的是什麼?如果您必須重新加載完整的頁面,爲什麼不使用正常的SubmitLink? –

回答

0

setResponsePage()應該得到一個.class文件或一個實例化的類。像

NextPage np = new NextPage(int a,int b); 
.... 
setResponsePage(np); 

setResponsePage(NextPage.class); 
+0

可能發生這種情況,您甚至需要將值傳遞給NextPage。然後你可以使用setResponsePage(new NextPage(var1))。 – BlondCode