Documentação

Dez 18, 2021
admin

O roteador play é capaz de gerar código Javascript para lidar com o roteamento a partir do Javascript rodando lado cliente de volta para sua aplicação. O roteador Javascript ajuda na refatoração de sua aplicação. Se alterar a estrutura das suas URLs ou nomes de parâmetros o seu Javascript é automaticamente actualizado para usar essa nova estrutura.

§Gerar um router Javascript

O primeiro passo para usar o router Javascript do Play é gerá-lo. O router apenas irá expor as rotas que você declara explicitamente, minimizando assim o tamanho do código Javascript.

Existem duas formas de gerar um router Javascript. Uma é incorporar o roteador na página HTML usando diretrizes modelo. A outra é gerar recursos Javascript em uma ação que pode ser baixada, em cache e compartilhada entre páginas.

§Roteador embutido

Um roteador embutido pode ser gerado usando a diretiva @javascriptRouter dentro de um template Twirl. Isto é normalmente feito dentro do template principal de decoração.

@()(implicit request: play.mvc.Http.Request)@helper.javascriptRouter("jsRoutes")( routes.javascript.Users.list, routes.javascript.Users.get)

O primeiro parâmetro é o nome da variável global na qual o roteador será colocado. O segundo parâmetro é a lista de rotas Javascript que devem ser incluídas neste roteador.

§Router resource

Um recurso de roteador pode ser gerado através da criação de uma ação que invoque o gerador do roteador. Ele tem uma sintaxe similar para incorporar o roteador em um template:

import play.mvc.Http;import play.routing.JavaScriptReverseRouter;import play.mvc.Controller;import play.mvc.Result;
public Result javascriptRoutes(Http.Request request) { return ok(JavaScriptReverseRouter.create( "jsRoutes", "jQuery.ajax", request.host(), routes.javascript.Users.list(), routes.javascript.Users.get())) .as(Http.MimeTypes.JAVASCRIPT);}

Então, adicione a rota correspondente:

GET /javascriptRoutes controllers.Application.javascriptRoutes(request: Request)

Having implementou esta ação, e adicionando-a ao seu arquivo de rotas, você pode então incluí-la como um recurso em seus templates:

<script type="text/javascript" src="@routes.Application.javascriptRoutes"></script>

§Usando o router

Usando jQuery como exemplo, fazer uma chamada é tão simples como:

$.ajax(jsRoutes.controllers.Users.get(someId)) .done( /*...*/ ) .fail( /*...*/ );

O router também disponibiliza algumas outras propriedades, incluindo o url e o type (o método HTTP). Por exemplo, a chamada acima para a função ajax do jQuery também pode ser feita como:

var r = jsRoutes.controllers.Users.get(someId);$.ajax({url: r.url, type: r.type, success: /*...*/, error: /*...*/ });

A abordagem acima é necessária quando outras propriedades precisam ser definidas como sucesso, erro, contexto, etc.

O absoluteURL e o webSocketURL são métodos (não propriedades) que retornam a string url completa. Uma conexão Websocket pode ser feita como:

var r = jsRoutes.controllers.Users.list();var ws = new WebSocket(r.webSocketURL());ws.onmessage = function(msg) { /*...*/};

§jQuery ajax method support

Note: Suporte embutido para a função ajax do jQuery será removido em uma versão futura. Esta seção sobre o suporte integrado é fornecida apenas para fins de referência. Por favor não utilize a função ajax do router em novo código e considere actualizar o código existente o mais rápido possível. A secção anterior sobre o uso do router documenta como jQuery deve ser usado.

Se jQuery não é a sua coisa, ou se você quiser decorar o método jQuery ajax de alguma forma, você pode fornecer uma função ao router para usar para executar consultas ajax. Esta função deve aceitar o objecto que é passado para o método ajax router, e deve esperar que o router tenha definido as propriedades type e url para o método apropriado e url para a requisição do router.

Para definir esta função, na sua acção passe o parâmetro ajaxMethod método, ex:

JavaScriptReverseRouter.create( "jsRoutes", "myAjaxMethod", request.host(), routes.javascript.Users.list(), routes.javascript.Users.get())

Next: Roteamento incorporado DSL

Deixe uma resposta

O seu endereço de email não será publicado.