Возможно ли компонентное кодирование URL с привязкой # в нем, используя h: outputLink? - PullRequest
1 голос
/ 04 марта 2011

У меня есть URL-адрес, который выглядит как
http://server/context/page.jsf?param1=value1#state=statename::stateparam=value2

В любом случае можно ли взять этот URL-адрес и кодировать компоненты (два значения), используя h:outputLink?

Я пробовал

<h:outputLink value="page.jsf">
    <f:param name="param1" value="#{servervalue1}#state=statename::stateparam=#{servervalue2}"/>
    <h:outputText value="#{linkname}"/>
</h:outputLink>

Но он кодирует раздел состояния URL-адреса, поэтому он больше не работает.

1 Ответ

1 голос
/ 04 марта 2011

Это невозможно.Лучшее, что вы можете сделать, - это создать собственную функцию EL, которая вызывает URLEncoder#encode(), как показано ниже:

public static String urlEncode(String value) {
    return URLEncoder.encode(value, "UTF-8");
}

, а затем использовать ее следующим образом:

<h:outputLink value="page.jsf?param1=#{util:urlEncode(value1)}#state=statename::stateparam=#{util:urlEncode(value2)}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...