Как мне вызвать код Java из кода JavaScript в Wicket?
Если я могу это сделать, как мне вызвать код Java (методы для примера) из кода JavaScript в Wicket.
Ответы
Ответ 1
ERK. Правильным ответом будет ajax call backs. Вы можете вручную закодировать js, чтобы подключиться к калитке js, или вы можете настроить обратные вызовы из компонентов калитки в java.
Например, из 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. После того, как событие OnDomReady запускается в вашем браузере, при загрузке страницы Wicket заставит его переключиться на вызов с помощью Ajax на ваш код с помощью метода ответа, показанного выше, после чего вы можете выполнить код Java на сервер и, возможно, добавить компоненты в цель ajax, которую нужно повторно отобразить.
Чтобы сделать это вручную, от js, вы можете подключиться к калитки, распечатав getCallbackScript(). toString() для атрибута компонента калитки, который затем вы сможете получить из js. Вызов этого URL из js вручную с помощью калитки wicketAjaxGet из wicket-ajax.js.
Ознакомьтесь с списком рассылки для обсуждения по этой теме:
http://www.nabble.com/Wicket-and-javascript-ts24336438.html#a24336438
Ответ 2
http://www.wicket-library.com/wicket-examples-6.0.x/index.html/ есть много примеров, чтобы вы начали.
Или взгляните на DWR
http://directwebremoting.org/
DWR позволяет Javascript в браузере взаимодействовать с Java на сервере и помогает вам управлять веб-страницами с результатами.
Как сказал Дорвар, это делается через AJAX
Ответ 3
Выдержка из 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()
. Если вы введете строку, возвращенную с этого метода в ваш браузер, вы вызовете метод ответа, то же самое применимо для javascript-метода.
Вы можете дополнительно добавить аргументы, добавив их в строку URL. Они принимают вид &foo=bar
.
вы получите необязательные аргументы в методе ответа Java следующим образом:
Map map = ((WebRequestCycle) RequestCycle.get()).getRequest().getParameterMap();
или это:
String paramFoo = RequestCycle.get().getRequest().getParameter("foo");
Ответ 4
Предполагая, что вы имеете в виду JavaScript, запущенный на клиенте, вы вызываете перенаправление HTTP на сервер, и ваш сервлет реагирует на запрос для данного URL.
Это называется Ajax, и есть number библиотеки, которые помогут вам сделать это.