Pergunta

Eu tenho um aplicativo do Google Web Toolkit (GWT) e quando eu ligar para ele, eu quero passar alguns argumentos / parâmetros que ele pode usar para recuperar dados dinamicamente. Por exemplo. se fosse um aplicativo gráfico de ações, eu gostaria que o meu link para conter o símbolo e, em seguida, tem o app GWT ler isso e fazer uma solicitação para algum serviço de estoque. Por exemplo. http: // myapp / GWT / StockChart símbolo = GOOG seria o link para o meu StockChart GWT aplicativo e ele faria um pedido para o meu serviço web Informação da para o estoque GOOG.

Até agora, eu tenho usado o código do lado do servidor para adicionar variáveis ??JavaScript para a página e, em seguida, eu li essas variáveis ??usando JSNI (JavaScript Native Interface).

Por exemplo:

No HTML host:

<script type="text/javascript">
  var stockSymbol = '<%= request.getParameter("symbol") %>';
</script>   

No código GWT:

public static native String getSymbol() /*-{
    return $wnd.stockSymbol;
}-*/;

(Embora esse código é baseado no código real que funciona, eu modifiquei para esta pergunta, então eu poderia ter gozado em algum lugar)

No entanto, isso nem sempre funciona bem em modo hospedado (especialmente com matrizes) e desde JSNI não estava por perto na versão 1.4 e anterior, eu estou supondo que não há outra maneira melhor /.

Foi útil?

Solução

Se você quiser ler consulta parâmetros de cadeia do pedido, pode usar o com.google.gwt.user.client.Window classe:

// returns whole query string 
public static String getQueryString() 
{
    return Window.Location.getQueryString();
}

// returns specific parameter
public static String getQueryString(String name)
{   
    return Window.Location.getParameter(name);
}   

Outras dicas

Também é uma boa opção para 'parameterize' uma aplicação GWT usando valores de hash.

Assim, em vez de

 http://myapp/gwt/StockChart?symbol=GOOG

uso

 http://myapp/gwt/StockChart#symbol=GOOG

Há algum bom suporte de ferramentas para tais 'parâmetros' através Mecanismo História do GWT .

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