2016-10-26 48 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