Перенаправить приложение GWT из сервлета - PullRequest
0 голосов
/ 06 января 2012

У меня есть приложение gwt, и в какой-то момент апплет открывается, и когда этот апплет выполняет действие, он вызывает сервлет.Из этого сервлета мне нужно перенаправить приложение на токен "#Home".

Я пытался вызвать History.newItem ("# home"), но он возвращает исключение "Неподдерживаемая операция на стороне сервера".

Я попытался снова вернуться к апплету из сервлета, и в апплете вызвать javascript, экспортированный с помощью jnsi, который перенаправляет на дом, но это тоже не работает, навигатор (Google Chrome) видит мою экспортированную функциюно при вызове в апплете выдает ошибку «функция не найдена»

Спасибо за любую помощь.

Ответы [ 2 ]

2 голосов
/ 06 января 2012

хеш-фрагменты (#home) никогда не перезапускают сервер, браузеры не отправляют это в http-запросах, поэтому вы не можете сделать это из сервлета.Вы должны сделать это на стороне клиента, поэтому попытайтесь выяснить, почему вы получаете «функция не найдена».

Вот один пример того, как изменить фрагмент хеша из апплета: http://standardcode.eu/programming/java/applet-interaction-with-url-hash.html

1 голос
/ 06 января 2012

Я предполагаю, что под Апплетом вы на самом деле имеете в виду не апплет Java, а HTML и Javascript, сгенерированный GWT из клиентского Java-кода. Постарайтесь не путать эти понятия. Ваш проект GWT имеет клиентский Java-код (который преобразуется в HTML и CSS при компиляции) и серверный Java-код, который развернут на сервере как есть. Нет смысла вызывать History.newItem (...) на стороне сервера, это код, который должен идти в вашей клиентской Java, чтобы он был переведен в Javascript и вызван в браузере (история навигации имеет смысл только в браузер).

Кроме того, то, что вы хотите здесь сделать, - это не создавать перенаправление HTTP как таковое, а только переходить на другую страницу / виджет GWT с помощью привязанного к нему якоря. И я предполагаю, что вы хотите, чтобы это также было включено в историю навигации браузера, чтобы пользователь мог правильно использовать кнопки браузера «назад» и «вперед». Для этого вам нужно просто реализовать интерфейс ValueChangeHandler<String> в вашем главном классе GWT, реализовать public void onValueChange(ValueChangeEvent<String> event), разобрать полученную привязку от события и соответственно изменить свое представление. Затем, когда пользователь нажимает кнопку или что-то еще, вы используете класс History, чтобы просмотреть новое событие, что-то вроде этого:

History.newItem("Home", true);

(true означает, что событие будет сгенерировано. В противном случае вы просто добавите токен home в стек истории браузера).

Это вызовет onValueChange(...) с событием, содержащим токен "home", и там вы сможете проанализировать этот токен и сделать все, что захотите.

http://google -web-toolkit.googlecode.com / svn / javadoc / 1.5 / com / google / gwt / пользователь / client / History.html # newItem (java.lang.String , логическое значение )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...