domingo, 13 de abril de 2008

Agregando el jsessionid a un HTML estático


Entre las múltiples razones para odiar Internet Explorer 7 está que por defecto deshabilita las cookies, así que mantener una sesión en Java requiere que siempre hagamos encodeURL o metamos en tags de c:url o html:link todos los vínculos.

Esto está chido cuando usamos servlets o jsp's pero, ¿qué pasa con los HTML's estáticos? Por ejemplo en OpenCms, en un artículo o un contenido tipo news.

La solución más sencilla que encontré es tomar un archivo de fuente javascript generado mediante JSP o bien embeder en la página principal del template, una variable javascript que almacene el sessionId. Por ejemplo:


<script type="text/javascript">
var jsess="<%=session.getId()%>";
</script>

Y después metemos esto con JavaScript a nuestros links, ejemplo:

<a href="http://www.blogger.com/shalala/" id="coso">Ir a shalala</a>
<script type="text/javascript">
var miLink = document.getElementById('coso');
miLink.href = miLink.href + ';jsessionid=' + jsess;
</script>


Obviamente se puede jugar con esto, por ejemplo:

<script type="text/javascript">

var links = document.getElementsByTagName("a");

for(i = 0; i < links.length; i++)

links[i].href = links[i].href + ";jsessionid=" + jsess;

</script>


Aunque esto no lo recomiendo mucho porque nunca sabemos si se pondrán links externos, y en ese caso poner un jsessionid puede causarle problemas a otros sistemas.

Espero que encuentren esta información de utilidad. Saludos,

Posts relacionados