Лучшая практика параметризации приложения GWT?
-
02-07-2019 - |
Вопрос
У меня есть приложение Google Web Toolkit (GWT), и когда я ссылаюсь на него, я хочу передать некоторые аргументы/параметры, которые оно может использовать для динамического получения данных.Например.если бы это было приложение для биржевых диаграмм, я бы хотел, чтобы моя ссылка содержала символ, а затем приложение GWT прочитало бы его и сделало бы запрос к какой-либо биржевой службе.Например. http://myapp/gwt/StockChart?symbol=GOOG это будет ссылка на мое приложение StockChart GWT, и оно отправит запрос к моему веб-сервису с информацией об акциях GOOG.
До сих пор я использовал серверный код для добавления переменных Javascript на страницу, а затем читал эти переменные с помощью JSNI (собственный интерфейс JavaScript).
Например:
В хост-HTML:
<script type="text/javascript">
var stockSymbol = '<%= request.getParameter("symbol") %>';
</script>
В коде GWT:
public static native String getSymbol() /*-{
return $wnd.stockSymbol;
}-*/;
(Хотя этот код основан на реальном коде, который работает, я изменил его для этого вопроса, поэтому, возможно, где-то напутал)
Однако это не всегда хорошо работает в размещенном режиме (особенно с массивами), и поскольку JSNI не было в версии 1.4 и предыдущих версиях, я предполагаю, что есть другой/лучший способ.
Решение
Если вы хотите прочитать параметры строки запроса из запроса, вы можете использовать com.google.gwt.user.client.Window сорт:
// 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);
}
Другие советы
Это также хороший вариант «параметризировать» приложение GWT с использованием хеш-значений.
Итак, вместо
http://myapp/gwt/StockChart?symbol=GOOG
использовать
http://myapp/gwt/StockChart#symbol=GOOG
Существует хорошая инструментальная поддержка таких «параметров» через Механизм истории GWT.