Ответ 1
Да, это то, что вы должны делать. По-моему, нет библиотеки для облегчения этого процесса.
Немного советов, хотя: если это вообще возможно, вам следует избегать использования схемы, которая требует, чтобы вы использовали процентные escape-последовательности в строке элемента истории. Причина в том, что location.hash
возвращается, когда location.href
заканчивается, например #%[email protected]%40
зависит от браузера и браузера. Например, Chrome возвращает #%[email protected]%40
; Firefox возвращает #<@@
. Настройка location.hash
может иметь похожие эффекты, специфичные для браузера.
Механизм маркера истории GWT опирается на location.hash
и не нормализует эту разницу в поведении браузера. Конечным результатом является то, что если вы используете что-то, требующее процентных экранов, вы получите URL-адреса, которые не могут быть разделены между браузерами - это проблема, если на какой-либо другой странице вы хотите генерировать ссылки, которые переходят на определенное место в вашем GWT приложение, или если вы ожидаете, что пользователи будут обмениваться URL-адресами, которые связаны с вашим приложением GWT. (или когда пользователь устанавливает Chrome, импортирует закладки из Firefox, указывающие на определенные места внутри вашего webapp, и вдруг закладки не работают так, как они делали раньше)
Для паранойи, я бы не помещал в вашу токенную строку истории символы ?
, #
, &
, %
, <
или >
. Однако строки типа orderDetails/oid=12313378
должны быть точными и кросс-браузерными.
(Отредактировано, чтобы уточнить, что проблема, о которой я говорю, связана с тем, что идентичные URL-адреса работают в нескольких разных браузерах, а не в том, что метод маркеров истории работает вообще в каждом из разных браузеров)