2008-10-02 93 views

回答

14

ERK完成。正確的答案是ajax回叫。您可以手動編寫js以掛鉤到wicket js,也可以從java中的wicket組件設置回調。 例如,從AjaxLazyLoadPanel:

 component.add(new AbstractDefaultAjaxBehavior() { 

     @Override 
     protected void respond(AjaxRequestTarget target) { 
      // your code here 
     } 

     @Override 
     public void renderHead(IHeaderResponse response) { 
      super.renderHead(response); 
      response.renderOnDomReadyJavascript(getCallbackScript().toString()); 
     } 

     } 

這個例子說明如何添加回調代碼在檢票的任何部件。在瀏覽器中觸發OnDomReady事件之後,在加載頁面時,Wicket會引發它的js工作,使用Ajax將代碼回調到上面顯示的'respond'方法中,此時您可以在服務器,並可能將組件添加到ajax目標以重新呈現。

要從js手動執行此操作,您可以通過將getCallbackScript()。toString()打印到檢票組件上的屬性來掛鉤到wicket的系統,然後您可以從js訪問該屬性。從wicket-ajax.js手動使用wicket的wicketAjaxGet從js手動調用此URL。

退房談話的大量的關於這一主題的郵件列表: http://www.nabble.com/Wicket-and-javascript-ts24336438.html#a24336438

+9

最後鏈接不起作用 – 2011-02-12 18:21:21

0

假設您的意思是在客戶端上運行JavaScript - 您將導致HTTP重定向到服務器,並讓您的servlet對給定URL的請求作出反應。

這被稱爲Ajax,還有的是libraries幫你做它number ..

5

摘自https://cwiki.apache.org/WICKET/calling-wicket-from-javascript.html

如果添加了擴展AbstractDefaultAjaxBehavior到你的頁面的任何類,檢票ajax.js將被添加到您網頁的標題。檢票ajax.js爲您提供了兩種基本的方法來調用您的組件:

function wicketAjaxGet(url, successHandler, failureHandler, precondition, channel) 

function wicketAjaxPost(url, body, successHandler, failureHandler, precondition, channel) 

下面是一個例子:

的JavaScript

function callWicket() { 
    var wcall = wicketAjaxGet('$url$' + '$args$', function() { }, function() { }); 
} 

$url$是從方法abstractDefaultAjaxBehavior.getCallbackUrl()獲得。如果將從該方法返回的字符串粘貼到瀏覽器中,則會調用respond方法,這同樣適用於javascript方法。

您可以通過將這些參數添加到URL字符串中來選擇性地添加參數。他們採取&foo=bar的形式。

你在Java響應方法可選參數是這樣的:

Map map = ((WebRequestCycle) RequestCycle.get()).getRequest().getParameterMap(); 

或本:

String paramFoo = RequestCycle.get().getRequest().getParameter("foo"); 
+1

值得一提的是Wicket 1.5中用於提取參數的API已更改。調用`RequestCycle.get()。getRequest()`獲得`Request`對象後,現在必須調用`getQueryParameters()`(用於GET參數),`getPostParameters()`(用於POST參數)或`getRequestParameters ()`(一次全部)。每個都會返回一個IRequestParameters實例,您可以查詢參數。請參閱[API文檔](http://wicket.apache.org/apidocs/1.5/)。 – cooperised 2012-03-13 19:56:07