Проблема с сервлетом JSP и Ajax - PullRequest
2 голосов
/ 09 марта 2009

У меня есть JSP с элементом управления деревом Javascript, и я хочу, чтобы пользователь мог скрывать или показывать это дерево одним нажатием кнопки и чтобы это изменение состояния было перенесено на другие посещенные страницы, т.е. на странице A пользователь скрывает дерево, затем на странице B дерево должно оставаться скрытым и т. д., пока пользователь не решит показать дерево.

Для этого я использую AJAX, чтобы установить переменную сеанса на сервере, которая проверяется при загрузке страницы. Теперь это работает нормально, когда у рассматриваемой страницы нет строки запроса в URL.

Но со страницей с таким URL, как:

http://localhost:8084/myApp/myAppPage?myAppParam=0

Если я вызываю кнопку показать / скрыть, я получаю ошибку Java NumberFormatException, потому что строка запроса потеряна. Но при ручной перезагрузке страницы после этого отображается страница с обновленным деревом.

HTML-код дерева создается на сервере и отображается в виде HTML-элемента на каждой странице.

Насколько я понимаю, AJAX предназначен для обновления только части страницы, и страница написана таким образом, чтобы можно было обновлять только содержимое div. Но я не могу понять, почему строка запроса теряется.

Интересно, пытается ли AJAX принудительно перезагрузить всю страницу?

Я знаю, что вызов AJAX правильно достигает сервлета. Но сервлет не настроен для вызова другой страницы.

Кто-нибудь видел это раньше, и знаете ли вы обходной путь?

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010

Строка запроса исходного URL-адреса запроса не будет передаваться автоматически, когда вы запускаете неаксиальный запрос в ответ на первоначальный запрос. Вы должны добавить его к URL-адресу ajaxical запроса самостоятельно. Строка запроса первоначального запроса доступна по window.location.search.

var ajaxurl = '/someservlet' + window.location.search;
0 голосов
/ 10 марта 2009

John

Спасибо за ваш ответ.

Я частично исправил некоторые вещи, и это было связано с вызовом Ajax с помощью кнопки формы, которая также должна была выполнять неявное обновление страницы.

Мартин О'Ши.

0 голосов
/ 09 марта 2009

Не видя задействованного кода, трудно спекулировать. Некоторые вещи для рассмотрения:

  • Как вы делаете запрос AJAX, т. Е. Используете ли вы установленную платформу, такую ​​как jQuery или Prototype, или вы сделали свою собственную?
  • Какой код находится за кнопкой показать / скрыть?
  • Как ваш сервлет отвечает на запрос?

Вы можете использовать Firebug , чтобы проверить правильность ваших запросов AJAX и войти в ваш сервлет, чтобы увидеть, что происходит (или, конечно, использовать отладчик).

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