| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Передача параметров при sendRedirect(...) |
| Автор: LjaO 10.9.2009, 11:01 | ||
Идея состоит в том что бы словить request, добавить в него параметр, и отслать обратно баузеру для повторной посылки. В случае когда в запросе никаких параметров не было - всё работало отлично. Если же у меня есть некоторые параметры в запросе - при редиректе они теряются и остаётся только мой добавленный. Ниже описана проблема потери старых параметров при sendRedirect() и так же преобразование в ljava.lang.String параметров доставаемых из getParametrsMap() Самое простое решение, которое я сейчас вижу - это взять все параметры из request и добавить их в url вместе с новым параметром. Но к сожалению тут я наткнулся на проблему.
В итоге запрос имеет вид ".../luser/filter.action2?SERVERID=2&autoRefresh=[Ljava.lang.String@d2bd3f&...." вместо ".../luser/filter.action2?SERVERID=2&autoRefresh=1?...." Может кто мне подсказать - как эту проблему победить? |
| Автор: garbuz 10.9.2009, 12:08 |
Насколько я помню, это массив, посмотрите точно, что вы передаете в качестве значения. |
| Автор: LjaO 10.9.2009, 15:12 | ||
| Да так и есть. ServletRequest::getParametrsMap.get(some_key) возвращает массив строк. Поборол проблему следующим способ :
Самому мне несильно нравиться этот способ .. но он работает .. причём на ура. Быстро и просто. Далее конечно последует code-refactoring |
| Автор: LjaO 10.9.2009, 15:30 |
| Если кто то подскажет более элегантный способ решения - с удовольствие опробую. |
| Автор: andyhomes 10.9.2009, 16:03 |
| Используйте: request.getParameter(...) Нужно понимать, почему параметр (в карте параметров) представлен именно массивом... (Даю наводку: представьте, например, HTML-форму в которой много одноименных input-полей.) |
| Автор: COVD 10.9.2009, 16:36 |
| Допустимая длина url имеет разные значения для разных браузеров и серверов. Обычно не рекомендуется превышать 2000 символов. Это ограничение необходимо учитывать при добавлении параметров в url. |
| Автор: necromancer 15.9.2009, 15:29 |
| жестоко =) 1 нужно учитывать вдруг урл редиректа уже имеет строку вида ?paramName=value 2 У объекта реквест можно получить готовую строку запроса - getQueryString если я не ошибаюсь и не перебирать parameter map 3 Есть классная но сложная для освоения бибилотека http://www.google.ru/search?q=urlrewrite&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a 4 ну и наконец можно было просто описать проблему =) может ее можно было бы решить более элегантным способом не прибегая к таким вещам =) |