2010-07-29 5 views
4

Я повторяю данные и создаю параметризованные URL-адреса для ссылок (на той же странице, но с параметрами) в приложении панели мониторинга. Тем не менее, способ, которым я это делаю, требует обновления страницы, когда пользователь нажимает на ссылку.Обновление URL без обновления

URL Генерация с StringBuilder

Detailhtml.append("<a href=\"http://" + domain + "&service=" + count +"&day=" + day +"\"><img src=\"/info.jpg\" alt=\"Info\"/>"); 

Есть ли способ я могу динамически создавать кнопки GWT или вызвать некоторые JavaScript для добавления параметров без обновления страницы?

Любая помощь будет большим ...

ответ

5

страница будет обновляться, если какая-либо часть URL до фрагмента (#) изменения. Поэтому, если вы перейдете с foo.com # a в foo.com/?bar=baz#a, будет активировано обновление страницы.

Лучший способ обойти это - просто ничего не изменить перед фрагментом. Измените foo.com/?bar=baz на foo.com/#bar=baz (или какой-нибудь вариант) и попросите ваше приложение GWT прослушать History, позвонив по телефону History.addHistoryListener(...).

Затем, когда вы слышите изменение истории, проанализируйте фрагмент в URL-адресе и соответствующим образом обновите приложение.

Некоторые библиотеки, такие как gwt-platform, предоставляют оболочку вокруг этой функциональности и позволяют описывать Place s, которые будут активированы при обновлении фрагментов. Если вы закончите делать много сложного с фрагментом, было бы неплохо заглянуть в места. Но если вы просто передаете несколько параметров, вы можете уйти от прослушивания изменений History.

+0

Отличный Джейсон, я этого не знал. Итак, чтобы выполнить эту работу, мне нужно вставить # в мой URL-адрес при первой загрузке? – tpow

+2

Не когда он загружается первым - всякий раз, когда вы хотите добавить/изменить что-то в URL-адресе. Например, посмотрите, как GMail изменяет свой URL в соответствии с изменениями состояния. –

+0

Игорь прав. Хотя вы * можете * загружать страницу с помощью # foo = bar и обрабатывать это, когда ваш код GWT загружается, если вы хотите, чтобы он был загружен в этом состоянии. Но вы должны убедиться, что ваш голый # URL-адрес по-прежнему работает. –

Смежные вопросы