2008-10-02 7 views

ответ

14

Эрк. Правильным ответом будет 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()); 
     } 

     } 

В этом примере показано, как добавить перезвонит код любого компонента в калиткой. После того, как событие OnDomReady запускается в вашем браузере, при загрузке страницы, Wicket заставит js enging перезвонить в ваш код с помощью Ajax на метод «reply», показанный выше, после чего вы можете выполнить Java-код на сервера и, возможно, добавить компоненты в цель ajax, которую нужно повторно отобразить.

Чтобы сделать это вручную, от js, вы можете подключиться к системе калитки, распечатав getCallbackScript(). ToString() для атрибута компонента калитки, который затем вы сможете получить из js. Вызов этого URL из js вручную с помощью wicket калиткиAjaxGet из wicket-ajax.js.

Проверьте список рассылки для Лота разговора на эту тему: http://www.nabble.com/Wicket-and-javascript-ts24336438.html#a24336438

+9

последний ссылка не работает – 2011-02-12 18:21:21

0

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

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

5

http://www.wicket-library.com/wicket-examples-6.0.x/index.html/ есть много примеров, чтобы вы собираетесь.

Или есть Посмотрите на ДВР

http://directwebremoting.org/

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

Как Dorward упомянуто это делается с помощью AJAX

+0

Сломанная ссылка http://wicketstuff.org/wicket13/ajax/ – Gorky 2014-05-09 00:03:00

5

Отрывок из https://cwiki.apache.org/WICKET/calling-wicket-from-javascript.html

Если добавить любой класс, который расширяет AbstractDefaultAjaxBehavior на вашу страницу, будут добавлены калитка-ajax.js к заголовку вашей веб-страницы. калитка 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"); 
+1

Стоит упомянуть, что API для извлечения параметров изменился в Wicket 1.5. Вызов `RequestCycle.get(). GetRequest()` для получения объекта `Request`, вы должны теперь вызывать` getQueryParameters() `(для параметров GET),` getPostParameters() `(для параметров POST) или` getRequestParameters() `(для всех сразу). Каждый возвращает экземпляр «IRequestParameters», который вы можете запросить для параметров. См. [Документы API] (http://wicket.apache.org/apidocs/1.5/). – cooperised 2012-03-13 19:56:07