[英]How do I call Java code from JavaScript code in Wicket?
如果我能做到这一点,我如何在Wicket的JavaScript代码中调用Java代码(例如方法)。
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() );
}
}
此示例显示如何将回调代码添加到Wicket中的任何Component。 在您的浏览器中触发OnDomReady事件后,在加载页面时,Wicket将使其成为js enging,使用Ajax回调您的代码,使用上面显示的'response'方法,此时您可以在服务器,并可能将组件添加到要重新呈现的ajax目标。
要从js手动执行此操作,您可以通过将getCallbackScript()。toString()打印到wicket组件上的属性来挂钩到wicket的系统,然后您可以从js访问该属性。 用wicket的wicketAjaxGet从wicket-ajax.js手动调用来自js的这个url。
查看关于此主题的大量对话的邮件列表: http : //www.nabble.com/Wicket-and-javascript-ts24336438.html#a24336438
摘录自https://cwiki.apache.org/WICKET/calling-wicket-from-javascript.html
如果您添加任何扩展AbstractDefaultAjaxBehavior的类到您的页面,wicket-ajax.js将被添加到您的网页的标题中。 wicket-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()
。 如果将从该方法返回的String粘贴到浏览器中,则将调用respond方法,这同样适用于javascript方法。
您可以选择通过将这些参数附加到URL字符串来添加参数。 它们采用&foo=bar
的形式。
你在Java响应方法中得到可选参数,如下所示:
Map map = ((WebRequestCycle) RequestCycle.get()).getRequest().getParameterMap();
或这个:
String paramFoo = RequestCycle.get().getRequest().getParameter("foo");
http://www.wicket-library.com/wicket-examples-6.0.x/index.html/有很多例子可以帮助你。
或者看看DWR
DWR允许浏览器中的Javascript与服务器上的Java交互,并帮助您使用结果操作网页。
正如Dorward所说,这是通过AJAX完成的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.