Предотвратить выход косых черт в обратные маршруты - PullRequest
2 голосов
/ 05 октября 2011

В моем приложении Play, когда я использую обратную маршрутизацию для генерации ссылок, косые черты в параметрах экранируются, и я бы предпочел, чтобы их не было.

Например:

<a href="@{Application.page('about/contact')}">Contact Us</a>

создает рабочую ссылку, но переводит вас на /about%2Fcontact.html, а не на /about/contact.html.(Ввод /about/contact.html в адресной строке также приводит к правильному расположению.)

Я делаю это, потому что у меня есть только несколько страниц, которые делают что-нибудь интересное, а остальные в основном статические - ониИспользуйте только основные функции шаблона (extends, include, get, set).Поскольку создание отдельных контроллеров и действий для каждого из них было бы излишним, я настроил одно действие для обработки всех из них.

public class Application extends Controller {
    public static void page(String path) {
        render("/static/" + path + ".html");
    }
}

, обрабатываемый одним маршрутом:

GET     /{<.+>path}.html                Application.page

Любая идея, как я могу изменить положение вещей, чтобы косые черты не были закодированы?

1 Ответ

1 голос
/ 11 октября 2011

Поскольку мы (по-видимому) не можем переопределить работу RouteArgs, мы можем декодировать указанный URL-адрес в методе, например так:

public class Application extends Controller {
    public static void page(String path) {
        render("/static/" + URLDecoder.decode(path, "UTF-8"); + ".html");
    }
}

Но помните о рисках безопасности!(ну, .html не так много, но на всякий случай ...)

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