Pregunta

Si puedo hacer esto, ¿cómo llamo al código Java (métodos por ejemplo) desde dentro del código JavaScript, en Wicket?

¿Fue útil?

Solución

erk. La respuesta correcta sería ajax call backs. Puede codificar manualmente el js para enganchar en el wicket js, o puede configurar las devoluciones de llamada desde componentes wicket en java. Por ejemplo, desde 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() );
        }

        }

Este ejemplo muestra cómo agregar código de devolución de llamada a cualquier componente en Wicket. Después de que el evento OnDomReady se dispare en su navegador, al cargar una página, Wicket hará que sea js enging, para volver a llamar a su código, utilizando Ajax, al método de "respuesta" que se muestra arriba, en cuyo punto puede ejecutar el código Java en el navegador. servidor, y potencialmente agregar componentes al destino ajax para volver a representarse.

Para hacerlo manualmente, desde js, puede conectarse al sistema de wicket imprimiendo getCallbackScript (). toString () a un atributo en un componente de wicket, al que podrá acceder desde js. Llamando este url de js manualmente con wicketAjaxGet de wicket-ajax.js.

Consulte la lista de correo para ver muchas conversaciones sobre este tema: http://www.nabble.com/Wicket-and-javascript-ts24336438 .html # a24336438

Otros consejos

Extracto de https://cwiki.apache.org/WICKET/ calling-wicket-from-javascript.html

Si agrega cualquier clase que extienda AbstractDefaultAjaxBehavior a su página, wicket-ajax.js se agregará al encabezado de su página web. wicket-ajax.js le proporciona dos métodos básicos para llamar a su componente:

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

y

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

Aquí hay un ejemplo:

JavaScript

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

$ url $ se obtiene del método abstractDefaultAjaxBehavior.getCallbackUrl () . Si pega la cadena devuelta de ese método en su navegador, invocará el método de respuesta, lo mismo se aplica al método javascript.

Opcionalmente, puede agregar argumentos agregando estos a la cadena de URL. Toman la forma & amp; foo = bar .

obtienes los argumentos opcionales en el método de respuesta Java como este:

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

o esto:

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

$ url $ se obtiene del método abstractDefaultAjaxBehavior.getCallbackUrl () . Si pega la cadena devuelta de ese método en su navegador, invocará el método de respuesta, lo mismo se aplica al método javascript.

Opcionalmente, puede agregar argumentos agregando estos a la cadena de URL. Toman la forma & amp; foo = bar .

obtienes los argumentos opcionales en el método de respuesta Java como este:

<*>

o esto:

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

$ url $ se obtiene del método abstractDefaultAjaxBehavior.getCallbackUrl () . Si pega la cadena devuelta de ese método en su navegador, invocará el método de respuesta, lo mismo se aplica al método javascript.

Opcionalmente, puede agregar argumentos agregando estos a la cadena de URL. Toman la forma & amp; foo = bar .

obtienes los argumentos opcionales en el método de respuesta Java como este:

<*>

o esto:

<*>

http: //www.wicket-library. com / wicket-examples-6.0.x / index.html / tiene muchos ejemplos para ponerte en marcha.

O eche un vistazo a DWR

http://directwebremoting.org/

DWR permite que Javascript en un navegador interactúe con Java en un servidor y le ayuda a manipular las páginas web con los resultados.

Como Dorward mencionó, esto se hace a través de AJAX

Suponiendo que te refieres a JavaScript que se ejecuta en el cliente, provocas que se realice una redirección HTTP al servidor y que tu servlet reaccione a la solicitud de la URL dada.

Esto se conoce como Ajax , y hay un número de bibliotecas que te ayudan a hacerlo ..

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top