Как избежать / избежать амперсанда (&) в 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¶m2=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()}
для этого.