Entradas

INPUTS dinámicos

Ahora con todo eso de las aplicaciones web enriquecidas, y que las interfaces web no deberian recargarse del todo cuando se hace un pequeño cambio, pues aquí pongo un script (en javascript, obviamente) que permite agregar y quitar INPUT-TEXT según sea el gusto. <fieldset id="alternativas"> <legend>Alternativas</legend> <input type="Text" id="alt1" name="alternativa" size="100"/><br/> <input type="Text" id="alt2" name="alternativa" size="100"/> </fieldset> <input type="Button" value="Agregar alternativa" onclick="agregar_alternativa()"/> <input type="submit" value="Guardar"/> <script type="text/javascript"> function agregar_alternativa(){ var fieldset=document.getElementById("alternativas"); var inputs=document.getElementsByName("alternativa");

Convertir String a Date

Hice una vez un algoritmo para extraer pedazos de una cadena y pasarlo por la clase Calendar para obtener la fecha. Pero creo que son muchos pasos. Pues bien, creo que la siguiente manera deberá ser la más sencilla. Supongamos que tenemos la cadena "1976/03/27" y queremos convertirlo a java.util.Date. Pues este será el código: DateFormat df=DateFormat.getDateInstance(DateFormat.SHORT,Locale.JAPAN); Date d=df.parse("1976/03/27"); Uso el Locale.JAPAN por qué sé que ellos usan ese formato (yyyy/mm/dd) para las fechas.

String XML a Archivo

La manera más común de mandar una cadena a un archivo es justamente usar Streams. Pero podemos aprovechar el JDK utilizando los manejadores XML que tiene incorporado. Asumiendo que la variable xml es un String que contiene un XML válido, y la variable f es un objeto de tipo java.io.File . DocumentBuilderFactory factory = DocumentBuilderFactory. newInstance (); DocumentBuilder builder = factory. newDocumentBuilder (); Document document = builder. parse ( new InputSource ( new StringReader (xml))); document. setXmlVersion ( "1.0" ); Source source= new DOMSource (document); Result result= new StreamResult (f); Transformer xformer= TransformerFactory.newInstance().newTransformer(); xformer.transform(source, result);

Descargar XLS y PDF sin abrirlos en el navegador

Más de uno ha querido solucionar este problema: un link en un archivo para descargar un XLS o PDF (o DOC) sin que se abra en el navegador. Pues aquí tengo la solución (con PHP) Primero, los enlaces deberían como estos: <a href="download.php?link=Plantilla.xlt">XLT</a> <a href="download.php?link=Libro.pdf">PDF</a> Y el archivo download.php es el siguiente: <?php $doc=$_GET[ "link" ]; header ( 'Content-Type:application/octet-stream' ); header ( 'Content-Disposition:attachment; filename="' .$doc. '"' ); readfile ($doc); ?>

Realm con ActiveDirectory

Después de revisar varios ejemplos, probar y probar, logré encontrar una configuración para usar Realm con el ActiveDirectory de Windows. Esta es la configuración que usé: <Context path="/ldap" > <Realm className="org.apache.catalina.realm.JNDIRealm" connectionURL="ldap://med_spdom01" debug="99" userPattern="{0}@meduca.gob.pe" roleBase="OU=Politicas,DC=meduca,DC=gob,DC=pe" roleName="cn"/> </Context> Como se ve en userPattern, le estoy poniendo el dominio del usuario. Primero había probado logearme con ese formato en la ventana de inicio de sesión del windows. Al momento de escribir el árroba (@) en el nombre de usuario, la lista de dominios se me desactiva. Ya no hacía falta especificar el dominio. Con esa premisa fue que intenté utilizar el mismo formato para el Realm en el Tomcat

Anular caché de los navegadores

Los navegadores guardan todos los archivos que se han accedido. En internet explorer se llama "archivos temporales de internet"... lo cuál se refiere al caché de internet. (tanto nombre!) Pero si estamos en una página que requiere autenticarse, y al deslogear regresa a la página autenticada, pues el navegador mostrará la página por más que el usuario haya cerrado la sesión. Lo mejor es que cada página que el navegador no se guarde en el caché. Para ello colocaremos las siguientes sentencias (ya sea en jsp o en un servlet): response.setHeader("Cache-control","no-cache"); response.setHeader("Pragma","no-cache"); response.setDateHeader ("Expires", 0); Y Listo

Generar XLS

Para generar XLS generalmente se usa el Jakarta POI (en java), pero para web es mejor engañar al navegador. El navegador recibe como cabecera el tipo del archivo (mime-type) que está recibiendo y sabrá qué programa abrir. Si es de tipo text/html, abrirá el mismo navegador, pero si es un video tendrá otro tipo y le pedirá al sistema operativo abrir el reproductor de vídeo correspondiente. Para el caso de XLS es lo mismo, y como el Excel puede abrir hasta html, entonces lo engañaremos con más facilidad: Al inicio del JSP colocaremos esta línea: <%@page contentType="application/vnd.ms-excel"%> Con esto, cuando se acceda al .jsp abrirá el contenido con el excel. Pero si se estuviese usando el Internet Explorer, el xls saldrá incrustado en el navegador. Esto puede ser molestoso. Lo que podemos hacer es que se le pregunte al navegador si desea abrirlo o descargarlo. Colocaremos las siguientes líneas: <%@page contentType="application/vnd.ms-excel"%> <%respon