Как URL-кодировать значение JSF outputLink

У меня есть код, похожий на этот:

<h:outputLink value="#{bean.url}" />

Но выходные данные содержат апостроф в ссылке href, который не закодирован в URL.

Я делаю что-то не так или это нормальное поведение для outputLink? Заранее спасибо.

(JBoss 4.2, Java 1.6)


person rich    schedule 09.09.2010    source источник


Ответы (1)


Это действительно не будет делать это для вас. В лучшем случае он добавит jsessionid в случае, если клиент не поддерживает файлы cookie. Только параметры ссылки, которые добавляются с помощью <f:param>, будут закодированы в URL.

<h:outputLink value="#{bean.url}">Click
    <f:param name="param1" value="#{bean.urlParam1}" />
    <f:param name="param2" value="#{bean.urlParam2}" />
</h:outputLink>
person BalusC    schedule 09.09.2010
comment
Не все параметры кодируются в части запроса URL-адреса. <f:param> занимается только добавлением и кодированием параметров в части запроса. Следовательно, может возникнуть необходимость также закодировать части атрибута value в ‹h:outputLink›. - person YoYo; 27.09.2017
comment
@YoYo: Как уже было сказано, h: outputLink не сделает этого за вас. Просто разделите их, чтобы их можно было указать через f:param. - person BalusC; 27.09.2017
comment
URL-адрес что-то вроде #{base}/request;par1=val1/detail?par2=val2. Я не понимаю, как я могу «разделить», чтобы поставить par1 как <f:param>? Однако для par2 нет проблем ... Мое решение состояло бы в том, чтобы вручную закодировать par2 и напрямую ввести атрибут <h:outputLink> value. Вы, кажется, предлагаете что-то более простое? - person YoYo; 27.09.2017