Subida de ficheros
Lo primero que necesitamos es configurar en el fichero web.xml ciertos parametros necesarios para gestionar la subida del fichero, vamos a darle valor a las propiedades que se van a encargar de gestionar donde se almacenarán los ficheros temporales, y cual va a ser el tamaño máximo permitido para los ficheros y para el buffer de memoria:
<context-param>
<!– Memoria maxima para cada peticion (en bytes) –>
<param-name>
oracle.adf.view.faces.UPLOAD_MAX_MEMORY
</param-name>
<param-value>992000000</param-value>
</context-param>
<context-param>
<!– Tamano maximo en disco por peticion (en bytes) –>
<param-name>
oracle.adf.view.faces.UPLOAD_MAX_DISK_SPACE
</param-name>
<param-value>992000000</param-value>
</context-param>
<context-param>
<!– Directorio de los ficheros temporales –>
<param-name>
oracle.adf.view.faces.UPLOAD_TEMP_DIR
</param-name>
<param-value>/tmp/ADFUploads/</param-value>
</context-param>
Una vez configurado el fichero web.xml, podríamos comenzar a generar nuestra página. Para poder realizar la subida de ficheros, el componente que vamos a necesitar es <af:inputFile>. Nuestra página además llevará un botón que llevará asociado el evento ActionEvent para procesar la subida de ficheros cuando se pulse el mismo.
<af:messages />
<af:inputFile label="Seleccione el archivo"
value="#{backing_registro.file}" />
<af:commandButton text="Enviar"
actionListener="#{backing_registro.procesarUpload}" />
Un dato a tener muy en cuenta, ya que a veces se nos puede olvidar, es que a la etiqueta que define el form, ya sea <h:form> o <afh:form>, debe llevar seteada una propiedad para indicarle que lo que se va a gestionar es una subida de ficheros. Veamos que valor hay que dar dependiendo del tipo de form que hayamos establecido:
<af:form usesUpload="true">
<h:form enctype="multipart/form-data">
Solo nos quedaría realizar el código del backing bean, como indicamos antes, el metodo llevará como parametro un ActionEvent para capturar el evento lanzado por el actionListener. En el método lo que vamos a realizar es una comprobación previa que el fichero no nos llega nulo, y si el fichero llega correctamente mostraremos un mensaje por pantalla:
private UploadedFile file;
public void procesarUpload(ActionEvent evento) {
UploadedFile file = getFile();
if (file != null)
{
FacesContext context =
FacesContext.getCurrentInstance();
FacesMessage message = new FacesMessage(
"Subida del fichero " + file.getFilename() +
" satisfactoria (" + file.getLength() +
" bytes)");
context.addMessage(
evento.getComponent().
getClientId(context),message);
// Aqui procesariamos el fichero
// para guardarlo donde queramos
}
}
public UploadedFile getFile() {
return file;
}
public void setFile(UploadedFile file) {
this.file = file;
}
Aún no habríamos guardado el fichero en nuestro servidor, ya es cuestión del programador realizarlo de una manera u otra, y para ello ya no es necesario ningún framework, con las librerías de Java debería bastar. De todos modos, si alguien tuviera dudas de como realizarlo, hacédnoslo saber y ampliaríamos el tutorial.
Si hemos realizado todo correctamente, la página nos quedaría del siguiente modo:
Tags: ADF, Java ServerFaces
