Как избежать / избежать амперсанда (&) в URL JSF

Я использую window.open(url,"selectWindow","status=no,width=610,height=480,scrollbars=no") в JSF. URL выглядит примерно так:

/abcxyz.jsf?param1=value1&param2=value2 

который будет отображаться во всплывающем окне, как:

/abcxyz.jsf?param1=value1&param2=value2

Проблема в том, value2 это строка, которая имеет & в этом. Сказать, value2 = ab&12, Как я могу убедиться, что value2 читается как ab&12 и что это не сломается после ab из-за & условное обозначение?

1 ответ

Решение

Вам нужно URL-кодировать его. В простой Java это было бы

String encodedValue2 = URLEncoder.encode(value2, "UTF-8");

& должен ли этот путь стать %26, Кодировка должна совпадать с настройкой сервера для декодирования URI входящего HTTP-запроса (хотя часто по умолчанию используется ISO-8859-1).

JSF <f:param> также делает это при использовании в <h:outputLink> а также <h:link> Однако они не помогают при создании URL для window.open() так что вам действительно нужно выполнить это в поддержке боба с помощью URLEncoder или создайте собственную функцию EL. Если вам случится использовать служебную библиотеку JSF OmniFaces, то вы можете использовать #{of:encodeURL()} для этого.

Смотрите также:

Другие вопросы по тегам