2011-02-10 8 views
12

jeśli mam ciąg "wyjścia", który równa się URL:Jak uri kodować ciąg w jsp?

${output} = "/testing/method/thing.do?foo=testing&bar=foo" 

w JSP, w jaki sposób przekonwertować ten ciąg do:

%2Ftesting%2Fmethod%2Fthing.do%3Ffoo%3Dtesting%26bar%3Dfoo 

użyciu

<c:out value="${output}"/> 

? Potrzebuję URLEncoder.encode (url) w c: out jakoś.

Odpowiedz

15

Nie jest to bezpośrednio możliwe ze standardowymi znacznikami/funkcjami JSTL. Oto siekać z pomocą <c:url>:

<c:url var="url" value=""><c:param name="output" value="${output}" /></c:url> 
<c:set var="url" value="${fn:substringAfter(url, '=')}" /> 
<p>URL-encoded component: ${url}</p> 

Jeśli chcesz to zrobić w bardziej elegancki sposób utworzyć funkcję EL. Na dole this answer można znaleźć podstawowy przykład kickoff. chcesz skończyć jak:

<p>URL-encoded component: ${my:urlEncode(output, 'UTF-8')}</p> 

z

public static String urlEncode(String value, String charset) throws UnsupportedEncodingException { 
    return URLEncoder.encode(value, charset); 
} 
0

Spróbuj tego: -

<c:out value="${output}" escapeXml="true" /> 

prawda, będzie to tylko ucieczka znaki specjalne z XML.

+0

szukają czegoś, co faktycznie robi URI kodowanie tam w katalogu C: na zewnątrz .. jakieś pomysły? – tester