Curso de Struts 2
Cómo subir un fichero
En esta lección aprenderás cómo implementar la funcionalidad para subir archivos en una aplicación web desarrollada con Struts 2. Además, exploraremos cómo personalizar formularios con etiquetas adicionales como el combobox.
index.jsp
El formulario para subir archivos debe usar el atributo enctype="multipart/form-data"
. Utilizaremos la etiqueta <s:file>
para crear el campo de entrada para el archivo.
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>Struts2 File Upload Example</title></head>
<body>
<s:actionerror/>
<s:fielderror/>
<s:form action="UploadMyFile" enctype="multipart/form-data" method="POST">
<s:file name="uploadFile" label="Please select a file to upload"></s:file>
<s:submit></s:submit>
</s:form>
</body>
</html>
<s:file>
: Crea un campo para seleccionar el archivo.enctype="multipart/form-data"
: Permite enviar datos binarios (como archivos) en el formulario.
struts.xml
Configuramos la acción UploadFile
para manejar la subida de archivos. Usamos el interceptor fileUpload
para definir restricciones como el tipo y tamaño del archivo.
<action name="UploadMyFile" class="com.pablomonteserin.action.FileUploadAction">
<interceptor-ref name="defaultStack">
<param name="fileUpload.allowedTypes">text/plain,image/png,image/gif,image/jpeg</param>
<param name="fileUpload.maximumSize">200000</param>
</interceptor-ref>
<result name="success">/uploadedFile.jsp</result>
</action>
fileUpload.allowedTypes
: Define los tipos de archivos permitidos (texto e imágenes en este ejemplo).fileUpload.maximumSize
: Establece el tamaño máximo en bytes (200 KB aquí).defaultStack
: Incluye el interceptor de subida de archivos dentro de la pila predeterminada de Struts.
FileUploadAction.java
La clase Action recibe los datos del archivo subido, incluyendo el contenido, el nombre del archivo y el tipo MIME.
//Habría que poner los getters y setters de fileSize(long), uploadFileFileName(String) y uploadFile(File)
public String execute() throws Exception {
String filePath = "/home/monty/Desktop/"+uploadFileFileName;
File newFile = new File(filePath);
FileUtils.copyFile(uploadFile, newFile);
return SUCCESS;
}
uploadFile
: Recibe el contenido del archivo subido.uploadFileFileName
: Almacena el nombre del archivo.FileUtils.copyFile
: Copia el archivo subido al directorio deseado (en este caso,/home/montey/docs/
).
combobox tag
Si necesitas incluir un combobox en el formulario, utiliza la etiqueta <s:combobox>
para generar una lista desplegable.
Ejemplo de combobox:
<s:combobox label="My Favourite Color" name="myFavouriteColor"
list="{'red':'Red','green':'Green','blue':'Blue'}"
headerKey="-1" headerValue="--- Please Select ---"
emptyOption="true" value="green" />
Combobox dinámico:
<s:combobox name="persona" label="Select a person"
list="personas" headerKey="-1" headerValue="--- Please Select ---"
listKey="id" listValue="nombre" />
list
: Obtiene los datos dinámicamente desde la clase Action.listKey
ylistValue
: Establecen la clave y el valor que se mostrarán al usuario.
Conclusión
La subida de archivos en Struts 2 es sencilla y personalizable, permitiendo controlar aspectos como los tipos de archivo y el tamaño máximo. Además, etiquetas como <s:combobox>
añaden flexibilidad a los formularios. ¡Es tu turno de probar estas funcionalidades en tu proyecto! 🚀