Question

Si je peux le faire, comment puis-je appeler du code Java (par exemple, des méthodes) depuis du code JavaScript, dans Wicket.

Était-ce utile?

La solution

erk. La bonne réponse serait un rappel ajax. Vous pouvez soit coder manuellement le js pour le connecter au guichet, soit configurer les rappels à partir de composants de guichet en java. Par exemple, depuis 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() );
        }

        }

Cet exemple montre comment ajouter du code de rappel à n’importe quel composant de Wicket. Après le déclenchement de l'événement OnDomReady dans votre navigateur, lors du chargement d'une page, Wicket le rappellera dans votre code, en utilisant Ajax, avec la méthode 'respond' indiquée ci-dessus, à partir de laquelle vous pourrez exécuter du code Java sur le serveur. serveur, et éventuellement ajouter des composants à la cible ajax à restituer.

Pour le faire manuellement, à partir de js, vous pouvez vous connecter au système de wicket en imprimant getCallbackScript (). toString () sur un attribut d'un composant de guichet, auquel vous pourrez ensuite accéder à partir de js. Appeler manuellement cette URL depuis js avec wicketAjaxGet de wicket depuis wicket-ajax.js.

Consultez la liste de diffusion pour de nombreuses conversations sur ce sujet: http://www.nabble.com/Wicket-and-javascript-ts24336438 .html # a24336438

Autres conseils

Extrait de https://cwiki.apache.org/WICKET/ appelant-guichet-de-javascript.html

Si vous ajoutez une classe qui étend AbstractDefaultAjaxBehavior à votre page, wicket-ajax.js sera ajouté à l'en-tête de votre page Web. wicket-ajax.js vous fournit deux méthodes de base pour appeler votre composant:

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

et

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

Voici un exemple:

JavaScript

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

$ url $ est obtenu à partir de la méthode abstractDefaultAjaxBehavior.getCallbackUrl () . Si vous collez la chaîne renvoyée par cette méthode dans votre navigateur, vous invoquerez la méthode respond. Il en ira de même pour la méthode javascript.

Vous pouvez éventuellement ajouter des arguments en les ajoutant à la chaîne d'URL. Ils prennent la forme & amp; foo = bar .

vous obtenez les arguments facultatifs dans la méthode de réponse Java comme suit:

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

ou ceci:

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

$ url $ est obtenu à partir de la méthode abstractDefaultAjaxBehavior.getCallbackUrl () . Si vous collez la chaîne renvoyée par cette méthode dans votre navigateur, vous invoquerez la méthode respond. Il en ira de même pour la méthode javascript.

Vous pouvez éventuellement ajouter des arguments en les ajoutant à la chaîne d'URL. Ils prennent la forme & amp; foo = bar .

vous obtenez les arguments facultatifs dans la méthode de réponse Java comme suit:

<*>

ou ceci:

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

$ url $ est obtenu à partir de la méthode abstractDefaultAjaxBehavior.getCallbackUrl () . Si vous collez la chaîne renvoyée par cette méthode dans votre navigateur, vous invoquerez la méthode respond. Il en ira de même pour la méthode javascript.

Vous pouvez éventuellement ajouter des arguments en les ajoutant à la chaîne d'URL. Ils prennent la forme & amp; foo = bar .

vous obtenez les arguments facultatifs dans la méthode de réponse Java comme suit:

<*>

ou ceci:

<*>

http: //www.wicket-library. com / wicket-examples-6.0.x / index.html / contient de nombreux exemples pour vous aider à démarrer.

Ou jetez un oeil à DWR

http://directwebremoting.org/

DWR permet à Javascript dans un navigateur d’interagir avec Java sur un serveur et vous aide à manipuler les pages Web avec les résultats.

Comme Dorward l’a mentionné, cela se fait via AJAX

En supposant que vous voulez dire que JavaScript s'exécute sur le client, vous effectuez une redirection HTTP vers le serveur et faites réagir votre servlet à la demande de l'URL donnée.

C’est ce que l’on appelle Ajax et un numéro de bibliothèques qui vous aident à le faire ..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top