Как мне вызвать код 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 библиотеки, которые помогут вам сделать это.