Проблема с косой чертой в URL - PullRequest
1 голос
/ 21 июля 2010

У меня проблема с косой чертой в URL.

Проблема: из запроса на странице GSP: Галерея

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

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

Объяснение: это ссылка в моем файле gsp: Галерея

после того, как запрос клика переходит к контроллеру:

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/но есть проблема с символом кодирования "/".

Готово Не могли бы вы мне помочь?

Большое спасибо, Том

Ответы [ 2 ]

3 голосов
/ 21 июля 2010

вам нужно расшифровать URL в граалях

http://www.grails.org/Dynamic+Encoding+Methods

0 голосов
/ 23 июля 2010

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

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

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

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

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

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

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

Tom

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