Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   JSTL - Codoficacion de Coma "," en URL (http://www.forosdelweb.com/f45/jstl-codoficacion-coma-url-480257/)

lvalenz 10/04/2007 16:28

JSTL - Codoficacion de Coma "," en URL
 
Estimados.. tengo el sgte problema:
necesito colocar una coma al crear una URL, pero al displayar es codificada a "%2C".
existe la alternativa de sobreescribir el resultado,,, pero porque ocurre??.. de que otra forma elegante se puede resolver para que no ocurra???

Aca esta el ejemplo:

Se solicita:
------------

--%><c:url var="CategoryDisplayURL" value="CategoryDisplay" scope=""><%--
--%><c:param name="langId" value="${langId}" /><%--
--%><c:param name="storeId" value="${WCParam.storeId}" /><%--
--%><c:param name="catalogId" value="${WCParam.catalogId}" /><%--
--%><c:param name="categoryId" value="${subCategory.categoryId}" /><%--
--%><c:param name="parent_category_rn" value="${topCategory.categoryId }" /><%--
--%><c:param name="top_category" value="${topCategory.categoryId}" /><%--
--%><c:param name="r_path" value="${ topCategory.categoryId}-,-${subCategory.categoryId}" /><%--
--%></c:url><%--



Como resultado se obtiene:
Notese que la COMA, "," ha sido cambiada a "%2C"

CategoryDisplay?langId=-5&storeId=10001&catalogId=40000000577&categoryId=1 349791&parent_category_rn=20096883&top_category=20 096883&r_path=20096883-%2C-1349791

GreenEyed 10/04/2007 17:44

Re: JSTL - Codoficacion de Coma "," en URL
 
¿Y que tiene de malo que la coma aparezca así?

lvalenz 11/04/2007 09:06

Re: JSTL - Codoficacion de Coma "," en URL
 
ocurre que se necesita enviar el URL como string, con la coma incluida para el contador de visitas de la pagina....
Entonces "%2C" es distinto a ","

Gracias por la respuestas. :-)

GreenEyed 11/04/2007 11:22

Re: JSTL - Codoficacion de Coma "," en URL
 
Ummmm... investigando un poco....
La cuestion es que cuando quieres enviar una cadena como parametro, la especificación de los URLS (RFC 1738)[2] dice que los caracteres no permitidos han de ser codificados usando el "URL-encoding"[3]

De todas formas, ocurren dos cosas:
1.- En realidad la coma (,) no sería obligatorio que codificarla, ya que es uno de los caracteres permitidos. Según el RFC:
Cita:

"...Only alphanumerics [0-9a-zA-Z], the special characters "$-_.+!*'()," [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL."
2.- De todas formas, que la coma aparezca así no tendría que impedir en ningún caso que el programa que recibe la URL lo interprete correctamente, ya que enviarla codificada es totalmente legal, así que te debería funcionar igualmente. Citando la RFC de nuevo:
Cita:

...On the other hand, characters that are not required to be encoded
(including alphanumerics) may be encoded within the scheme-specific
part of a URL, as long as they are not being used for a reserved
purpose.
Si no te funciona, puedes "reclamar" al programa que recibe la URL que no esta tratando correctamente los URLs codificados segun el estandar, o puedes "indicar" a la libreria de tags que en realidad la coma no hace falta codificarla y ver si se puede configurar... Pero yo apostaría por que el que lo hace mal es el programa que recibe la URL, ya que no es obligatorio pero está permitido enviar la coma de esa forma.

Referencias:
[1]http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
[2]http://www.rfc-editor.org/rfc/rfc1738.txt
[3]http://www.w3schools.com/tags/ref_urlencode.asp

lvalenz 13/04/2007 08:41

Re: JSTL - Codoficacion de Coma "," en URL
 
Gracias GreenEyed por tus respuestas.
Finalmente encontramos una alternativa (para responderle al cliente):

--%><c:set var="CategoryDisplayURL"><c:url value="CategoryDisplay"><%--
--%><c:param name="langId" value="${langId}" /><%--
--%><c:param name="storeId" value="${WCParam.storeId}" /><%--
--%><c:param name="catalogId" value="${WCParam.catalogId}" /><%--
--%><c:param name="categoryId" value="${category.categoryId}" /><%--
--%><c:param name="top_category" value="${WCParam.top_category}" /><%--
--%></c:url><c:out value="&r_path=${WCParam.top_category},${category. categoryId}"/></c:set><%--
--%><c:set property="texto" value="${category.description.name}" target="${stringUtil}" /><%--
--%><a href="<c:out value="${CategoryDisplayURL}" escapeXml="false" />" target="_top"

luego si vemos la URL, tenemos una hermosa coma ","

GreenEyed 13/04/2007 08:58

Re: JSTL - Codoficacion de Coma "," en URL
 
:-) De todas formas el programa que trata la URL debería ser capaz de tratar la coma. Pero cuando no se puede tocar el otro programa... pues toca hacer estas cosas. Al menos teneis una solución :arriba:


La zona horaria es GMT -6. Ahora son las 20:46.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.