2011-02-10 16 views
12

si tengo una cadena "de salida" que es igual a una url:Cómo codificar uri una cadena en jsp?

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

en el JSP, ¿cómo puedo convertir esa cadena en:

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

usando

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

? Necesito URLEncoder.encode (url) en el c: de alguna manera.

Respuesta

15

No es directamente posible con las etiquetas/funciones estándar JSTL. Aquí hay un truco con la ayuda de <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> 

Si desea hacerlo de forma más limpia, crear una función de EL. En la parte inferior de this answer puede encontrar un ejemplo básico de inicio. Desea terminar como:

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

con

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

Prueba esto: -

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

Por supuesto, esto sólo va a escapar caracteres especiales desde XML.

+0

buscando algo que realmente hace una codificación de URI allí mismo, en c: fuera .. alguna idea? – tester

Cuestiones relacionadas