2010-07-21 5 views
1

У меня проблема с кодировкой косой черты в URL.Проблема с кодировкой косой черты в url

Проблема:
из запроса в GSP странице:
< A HREF = "http://foo.cz/myapp/page/show?url=home/gallery" > Галерея </а >

я получил:
http://foo.cz/myapp/page/show?url=home%2Fgallery
в адресной строке интернет-браузера.

Проблема с кодированным символом от "/" до "% 2F".

Объяснение:
это ссылка на мой GSP файле:
< A HREF = "http://foo.cz/myapp/page/show?url=home/gallery" > Галерея </>

после щелчка запрос идет к контроллеру:

def show ={ 
    def page = Page.findByUrl(params.url) //it works 
} 


, тогда я получил страницу gsp в своем интернет-браузере. Все отлично работает, я получил нужную страницу, но в адрес строки в интернет-браузере Я видел:
http://foo.cz/myapp/page/show?url=home%2Fgallery

Существует не символ «/», но закодировать «% 2F»

Мотивация
Я хочу, чтобы установить URL в UrlMapping.groovy для:

"/${url}" (controller:"page", action:"show") 


и получите:
http://foo.cz/myapp/home/gallery/
но есть проблема с кодированием символом "/".

Отделка
Помогите мне пожалуйста?

спасибо Том

+0

в адресной строке вы всегда получите http://foo.cz/myapp/page/show?url=home%2Fgallery, потому что ваш браузер просто кодирует URL. Вы можете избежать этого, используя картографирование URL-адресов, поэтому http://foo.cz/myapp/home/gallery/ будет обычно передаваться в ваш контроллер (grails автоматически расшифровывает URL-адрес). – Oleksandr

ответ

0

это не трудно заменить "% 2F" на "/", но есть проблема с отображением url. Преобразование в теге Grails CreateLink.
См. Источник. Существует метод String encodeAsURL(), как сказал мой вышеизложенный Аарон Сондерс. Например, вы можете написать свой собственный тег и использовать метод String replaceAll («% F2», «/»), и он работает.

я получил нужный адрес в адресной строке интернет-браузера:
http://foo.cz/myapp/page/show?url=home/gallery

и я заменил в MappingURL.groovy на:
http://foo.cz/myapp/home/gallery

Хм, я должен использовать wildcart и другой грязный код в контроллере. Это не хороший код.

Теперь я знаю, что не рекомендуется использовать косую черту (/) в параметрах, как сказал мне Олександр.

Работает нормально, когда вы используете, например, «-» или другой символ сохранения URL как разделитель параметра.

Большое спасибо всем гуру.

Том

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