Как мне вызвать Java-код из JavaScript-кода в Wicket?
-
03-07-2019 - |
Вопрос
Если я смогу это сделать, как мне вызвать Java-код (например, методы) из кода JavaScript в Wicket.
Решение
erk.Правильным ответом был бы обратный вызов ajax.Вы можете либо вручную закодировать js для подключения к wicket js, либо настроить обратные вызовы из компонентов wicket на 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 вызовет его js-разработку, чтобы вызвать обратный вызов в вашем коде, используя Ajax, к методу 'response', показанному выше, после чего вы сможете выполнить Java-код на сервере и, возможно, добавить компоненты в цель ajax для повторного рендеринга.
Чтобы сделать это вручную, из js, вы можете подключиться к системе wicket, распечатав getCallbackScript().toString() для атрибута компонента wicket, к которому вы затем сможете получить доступ из js.Вызываем этот URL-адрес из js вручную с помощью wicket от wicket Ajaxget из wicket-ajax.js.
Ознакомьтесь со списком рассылки, в котором много разговоров на эту тему: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()
.Если вы вставите строку, возвращенную этим методом, в свой браузер, вы вызовете метод response, то же самое относится и к методу javascript.
Вы можете дополнительно добавить аргументы, добавив их к строке URL.Они принимают форму &foo=bar
.
вы получаете необязательные аргументы в методе Java response следующим образом:
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 на сервере и помогает вам управлять веб-страницами с результатами. Р>
Как отметил Дорвард, это делается через AJAX
Предполагая, что вы имеете в виду JavaScript, выполняющийся на клиенте, - вы заставляете HTTP-перенаправление на сервер, и ваш сервлет реагирует на запрос по указанному URL-адресу.
Это известно как Ajax , и есть число из библиотеки , которые помогут вам это сделать.