2016-10-26 50 views
0

隨着檢票POST請求檢票

如何發送了var slideCounter到檢票口?

有人可以提供一個例子嗎?

我無法在此找到更多信息。

$(document).on('click', '.lean-overlay', function() { 
    var slideCounter = 0; 

    // TODO Send slidecounter to wicket 
}); 
+0

https://cwiki.apache.org/confluence/display/WICKET/Calling+Wicket+ from + Javascript https://ci.apache.org/projects/wicket/guide/6.x/guide/advanced.html#advanced_2 –

+0

這不幫助我,我已經讀過幾次了。我要求「wicket.ajax.post」或者其他東西。在這個文檔中只有 var wcall = Wicket.Ajax.get({u:'$ {callbackUrl}'+'$ {args}'}); Still感謝您的回覆... – greedsin

回答

1

您可以使用ajax回調從javascript調用wicket代碼。你可以做這樣的事情:

Java代碼:

AbstractDefaultAjaxBehavior behave = new AbstractDefaultAjaxBehavior() { 

     @Override 
     public void renderHead(Component component, IHeaderResponse response) { 
      super.renderHead(component, response); 
      String componentMarkupId = component.getMarkupId(); 
      String callbackUrl = getCallbackUrl().toString(); 
      response.render(JavaScriptHeaderItem.forScript(
        "var componentMarkupId='" + componentMarkupId 
          + "'; var callbackUrl='" + callbackUrl + "';", 
        "values")); 
     } 

     protected void respond(final AjaxRequestTarget target) { 

      IRequestParameters parameters = RequestCycle.get().getRequest() 
        .getQueryParameters(); 

      // write yout java code here 
      // if you want to use the slideCounter variable 
      // you have to retrieve its value like this: 
      // parameters.getParameterValue("slideCounter").toString() 

     } 

    }; 

    add(behave); 

JavaScript代碼:

$(document).on('click', '.lean-overlay', function() { 
var slideCounter = 0; 
executeJava(slideCounter); 
}); 

    function executeJava(slideCounter) { 
     try { 
      var commandToSend = 'slideCounter=' + slideCounter; 
      var wcall = Wicket.Ajax.post({ 
       u: callbackUrl + '&' + commandToSend 
      }); 
     } catch (e) { 
      alert(e); 
     } 
    } 
3

發送請求很簡單,只要:Wicket.Ajax.post({"u": "the/url?slideCounter="+slideCounter})

更復雜的部分是構造the/url

  1. 要發送給組件,這個組件應該實現IRequestListener接口。構造URL使用:requestCycle.urlFor(component)
  2. 將其發送到一個更好的行爲實例AbstractDefaultAjaxBehavior並使用其#getCallbackUrl()

一旦你的網址,你需要將其存儲在頁面的DOM,例如與OnDomReadyHeaderItem.forScript(「window.TheUrl ='」+ theUrl +「'」)

+0

好吧我試過這個,但像你說的問題是網址:(你能解釋我如何使用getCallbackUrl? – greedsin