Domanda

Se posso farlo, come posso chiamare il codice Java (metodi per esempio) dall'interno del codice JavaScript, in Wicket.

È stato utile?

Soluzione

ERK. La risposta corretta sarebbe ajax callbacks. Puoi codificare manualmente js per agganciarlo a wicket js, oppure puoi impostare i callback da componenti wicket in java. Ad esempio, da 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() );
        }

        }

Questo esempio mostra come aggiungere il codice di richiamata a qualsiasi componente in Wicket. Dopo che l'evento OnDomReady si attiva nel tuo browser, durante il caricamento di una pagina, Wicket causerà il suo js enging, richiamando nel tuo codice, usando Ajax, il metodo "rispondi" mostrato sopra, a quel punto puoi eseguire il codice Java sul server e potenzialmente aggiungere componenti alla destinazione ajax per il rendering di nuovo.

Per farlo manualmente, da js, puoi agganciarlo al sistema wicket stampando getCallbackScript (). toString () su un attributo su un componente wicket, a cui potrai accedere da js. Chiamare questo url da js manualmente con wicket's wicketAjaxGet da wicket-ajax.js.

Controlla la mailing list per molte conversazioni su questo argomento: http://www.nabble.com/Wicket-and-javascript-ts24336438 .html # a24336438

Altri suggerimenti

Estratto da https://cwiki.apache.org/WICKET/ chiamando wicket-da-javascript.html

Se aggiungi una classe che estende AbstractDefaultAjaxBehavior alla tua pagina, wicket-ajax.js verrà aggiunto all'intestazione della tua pagina web. wicket-ajax.js ti offre due metodi di base per chiamare il tuo componente:

function wicketAjaxGet(url, successHandler, failureHandler, precondition, channel)

e

function wicketAjaxPost(url, body, successHandler, failureHandler, precondition, channel)

Ecco un esempio:

JavaScript

function callWicket() {
   var wcall = wicketAjaxGet('$url

$ url $ è ottenuto dal metodo abstractDefaultAjaxBehavior.getCallbackUrl () . Se incolli la stringa restituita da quel metodo nel tuo browser, invocherai il metodo di risposta, lo stesso vale per il metodo javascript.

Puoi facoltativamente aggiungere argomenti aggiungendoli alla stringa URL. Prendono la forma & amp; foo = bar .

ottieni gli argomenti opzionali nel metodo di risposta Java in questo modo:

Map map = ((WebRequestCycle) RequestCycle.get()).getRequest().getParameterMap();

o questo:

String paramFoo = RequestCycle.get().getRequest().getParameter("foo");
+ '$args

$ url $ è ottenuto dal metodo abstractDefaultAjaxBehavior.getCallbackUrl () . Se incolli la stringa restituita da quel metodo nel tuo browser, invocherai il metodo di risposta, lo stesso vale per il metodo javascript.

Puoi facoltativamente aggiungere argomenti aggiungendoli alla stringa URL. Prendono la forma & amp; foo = bar .

ottieni gli argomenti opzionali nel metodo di risposta Java in questo modo:

<*>

o questo:

<*>, function() { }, function() { }); }

$ url $ è ottenuto dal metodo abstractDefaultAjaxBehavior.getCallbackUrl () . Se incolli la stringa restituita da quel metodo nel tuo browser, invocherai il metodo di risposta, lo stesso vale per il metodo javascript.

Puoi facoltativamente aggiungere argomenti aggiungendoli alla stringa URL. Prendono la forma & amp; foo = bar .

ottieni gli argomenti opzionali nel metodo di risposta Java in questo modo:

<*>

o questo:

<*>

http: //www.wicket-library. com / wicket-esempi-6.0.x / index.html / ha molti esempi per iniziare.

O dai un'occhiata a DWR

http://directwebremoting.org/

DWR consente a Javascript in un browser di interagire con Java su un server e ti aiuta a manipolare le pagine web con i risultati.

Come detto da Dorward, questo viene fatto tramite AJAX

Supponendo che intendi JavaScript in esecuzione sul client - fai in modo che un reindirizzamento HTTP venga eseguito sul server e il tuo servlet reagisca alla richiesta per l'URL specificato.

Questo è noto come Ajax e ci sono numero di librerie che ti aiutano a farlo ..

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top