Pergunta

Se eu puder fazer isso, como faço para chamar o código Java (métodos, por exemplo) de dentro do código JavaScript, em Wicket.

Foi útil?

Solução

ERK. A resposta correta seria chamada costas ajax. Você pode codificar manualmente os js para ligar para os js postigo, ou você pode configurar os retornos de componentes postigo em java. Por exemplo, a partir 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 exemplo mostra como adicionar código de chamada de volta a qualquer componente em Wicket. Após o evento é acionado OnDomReady em seu navegador, ao carregar uma página, Wicket fará com que ele de js enging, para chamar de volta em seu código, usando Ajax, com o método de 'responder' mostrado acima, em que ponto você pode executar código Java no servidor, e potencialmente adicionar componentes para o alvo ajax para ser re-processado.

Para fazê-lo manualmente, a partir js, você pode ligar para o sistema do postigo imprimindo getCallbackScript (). ToString () para um atributo em um componente postigo, que então você vai ser capaz de acesso a partir de js. Chamar esse url do js manualmente com wicketAjaxGet do postigo de postigo-ajax.js.

Confira a lista de endereços para o lote de conversas sobre este tema: http://www.nabble.com/Wicket-and-javascript-ts24336438 .html # a24336438

Outras dicas

https://cwiki.apache.org/WICKET/ chamando-postigo-de-javascript.html

Se você adicionar qualquer classe que estende AbstractDefaultAjaxBehavior para sua página, wicket-ajax.js será adicionado ao cabeçalho ofyour página web. wicket-ajax.js oferece dois métodos básicos para chamar seu componente:

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

e

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

Aqui está um exemplo:

JavaScript

function callWicket() {
   var wcall = wicketAjaxGet('$url$' + '$args$', function() { }, function() { });
}

$url$ é obtido a partir do método abstractDefaultAjaxBehavior.getCallbackUrl(). Se você colar a string retornada a partir desse método em seu navegador, você chamar o método responder, o mesmo se aplica para o método de javascript.

Você pode opcionalmente adicionar argumentos anexando-os para a cadeia de URL. Eles tomam a forma &foo=bar.

você obter os argumentos opcionais no método de resposta Java como este:

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

ou este:

String paramFoo = RequestCycle.get().getRequest().getParameter("foo");

http: //www.wicket-library. com / wicket-exemplos-6.0.x / index.html / tem abundância de exemplos para você ir.

Ou ter um Veja o DWR

http://directwebremoting.org/

DWR permite JavaScript em um navegador para interagir com Java em um servidor e ajuda a manipular páginas web com os resultados.

Como Dorward mencionado isso é feito via AJAX

Assumindo que você quer dizer JavaScript em execução no cliente -. Você causar um redirecionamento HTTP a ser feita para o servidor, e ter o seu servlet reagir ao pedido de URL dada

Isto é conhecido como Ajax , e há um número de bibliotecas que ajudam a fazê-lo ..

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top