AJAX File Upload con JSF

April 24th, 2006

Voy a describir el modo de hacer carga de ficheros mediante JSF utilizando AJAX. El método esta adaptado del que utiliza Martin Konicek en PHP.

Utilizaremos el componente FileUpload incluido en el Tomahawk de Apache Myfaces. En primer lugar creamos dos páginas web, una será la que contenga la imagen y otra el formulario. Incluimos la segunda en la primera mediante un iframe.

Configuramos la opción onChange del componente FileUpload para que ejecute un código javascript que cambia la imagen actual por otra imagen de carga (un indicador ajax por ejemplo). La forma de hacerlo es accediendo al documento padre y modificando el atributo src del img. A continuacion, se ejecutará un submit(). Esto establecerá el valor del UploadedFile del managed bean que da soporte al FileUpload. En el cuerpo del método setImage (o como se llame) del managed bean se guardará la imagen del modo que sea más adecuado (un fichero, una base de datos, en memoria, etc).

El iframe se recargará y se debe añadir un método en el onLoad del body. Éste método se encargará de modificar la imagen del documento padre para que apunte a la nueva imagen subida. Lo normal será pasarle como parámetro la localización de la nueva imagen, que habrá sido establecida por el setImage mencionado en el párrafo anterior.

Si todo es correcto, se vería el cambio de imagen :-)

3 Responses to “AJAX File Upload con JSF”

  1. jhonny Says:

    No puedes ser un poco mas especifico

  2. dsuarez Says:

    ¡Hola!

    La verdad es que esto lo trabajé hace mucho. Léete lo que tenía hecho Martin Konicek primero y luego intenta adaptarlo según mis instrucciones. Si te fijas bien el post es de hace casi dos años… el tiempo que hace que no toco el JSF; así que todo lo que pueda decir te acerca de ello estará, lamentablemente, desactualizado.

    ¡Gracias por aparecer por mi blog!

  3. Dario Lopitlato Says:

    Hola!

    LA verdad que me hiciste perder el tiempo, deberias a hacer un blog de anime

    Saludos

    Dario

Leave a Reply

Powered by WP Hashcash