Вопрос

Если я смогу это сделать, как мне вызвать 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

http://directwebremoting.org/

DWR позволяет Javascript в браузере взаимодействовать с Java на сервере и помогает вам управлять веб-страницами с результатами.

Как отметил Дорвард, это делается через AJAX

Предполагая, что вы имеете в виду JavaScript, выполняющийся на клиенте, - вы заставляете HTTP-перенаправление на сервер, и ваш сервлет реагирует на запрос по указанному URL-адресу.

Это известно как Ajax , и есть число из библиотеки , которые помогут вам это сделать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top